Commit 9a319eb7 by liangkaiping

copy

parent b9a5f749
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud-drools</artifactId>
<groupId>com.yizhi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-drools-api</artifactId>
<dependencies>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-orm</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-core</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yizhi.drools.application.constant;
/**
* @ClassName Constants
* @Description TODO
* @Author shengchenglong
* @DATE 2019-11-29 10:08
* @Version 1.0
*/
public class DroolsConstants {
public static final Integer DELETED_NO = 0;
public static final Integer DELETED_YES = 1;
public static final Integer TEMPLATE_NO = 0;
public static final Integer TEMPLATE_YES = 1;
/**
* 1:内容规则,2:用户规则
*/
public static final Integer RULE_TYPE_CONTENT = 1;
public static final Integer RULE_TYPE_USER = 2;
/**
* 策略时间类型:1:长期,2:自定义
*/
public static final Integer STRATEGY_TIME_LONG = 1;
public static final Integer STRATEGY_TIME_CUSTOM = 2;
/**
* 多条规则之间的逻辑关系
*/
public static final String AND = "and";
public static final String OR = "or";
/**
* 规则item的属性对应值得关系
*/
public static final String RELATION_EQUALS = "equals";
public static final String RELATION_NOT_EQUALS = "notEquals";
public static final String RELATION_CONTAINS = "contains";
public static final String RELATION_NOT_CONTAINS = "notContains";
/**
* 每个业务的标识符
*/
public static final String BUSINESS_NAME_COURSE = "course";
public static final String BUSINESS_NAME_TRAININGPROJECT = "trainingProject";
public static final String BUSINESS_NAME_EXAM = "exam";
public static final String BUSINESS_NAME_ASSIGNMENT = "assignment";
public static final String BUSINESS_NAME_RESEARCH = "research";
public static final String BUSINESS_NAME_LIVE = "live";
public static final String BUSINESS_NAME_CASE = "case";
public static final String BUSINESS_NAME_CASEACTIVITY = "caseActivity";
public static final String BUSINESS_NAME_USER = "account";
public static final String BUSINESS_NAME_ALBUM = "album";
/**
* 每个业务在esearch服务中对应的实体
*/
public static final String BUSINESS_CLASS_NAME_COURSE = "com.fulan.esearch.pojo.biz.Course";
public static final String BUSINESS_CLASS_NAME_TRAININGPROJECT = "com.fulan.esearch.pojo.biz.TrainingProject";
public static final String BUSINESS_CLASS_NAME_EXAM = "com.fulan.esearch.pojo.biz.Exam";
public static final String BUSINESS_CLASS_NAME_ASSIGNMENT = "com.fulan.esearch.pojo.biz.Assignment";
public static final String BUSINESS_CLASS_NAME_RESEARCH = "com.fulan.esearch.pojo.biz.Research";
public static final String BUSINESS_CLASS_NAME_LIVE = "com.fulan.esearch.pojo.biz.Live";
public static final String BUSINESS_CLASS_NAME_CASE = "com.fulan.esearch.pojo.biz.StudentCase";
public static final String BUSINESS_CLASS_NAME_CASEACTIVITY = "com.fulan.esearch.pojo.biz.CaseLibrary";
public static final String BUSINESS_CLASS_NAME_ALBUM = "com.fulan.esearch.pojo.biz.Album";
public static final String BUSINESS_CLASS_NAME_USER = "com.fulan.esearch.pojo.system.Account";
/**
* 根据业务值获取业务在es中的实体类名
*
* @param businessName
* @return
*/
public static String getBusinessClassName(String businessName) {
String businessClassName = null;
switch (businessName) {
case BUSINESS_NAME_COURSE:
businessClassName = BUSINESS_CLASS_NAME_COURSE;
break;
case BUSINESS_NAME_TRAININGPROJECT:
businessClassName = BUSINESS_CLASS_NAME_TRAININGPROJECT;
break;
case BUSINESS_NAME_EXAM:
businessClassName = BUSINESS_CLASS_NAME_EXAM;
break;
case BUSINESS_NAME_ASSIGNMENT:
businessClassName = BUSINESS_CLASS_NAME_ASSIGNMENT;
break;
case BUSINESS_NAME_RESEARCH:
businessClassName = BUSINESS_CLASS_NAME_RESEARCH;
break;
case BUSINESS_NAME_LIVE:
businessClassName = BUSINESS_CLASS_NAME_LIVE;
break;
case BUSINESS_NAME_CASE:
businessClassName = BUSINESS_CLASS_NAME_CASE;
break;
case BUSINESS_NAME_CASEACTIVITY:
businessClassName = BUSINESS_CLASS_NAME_CASEACTIVITY;
break;
case BUSINESS_NAME_USER:
businessClassName = BUSINESS_CLASS_NAME_USER;
break;
case BUSINESS_NAME_ALBUM:
businessClassName = BUSINESS_CLASS_NAME_ALBUM;
break;
default:
break;
}
return businessClassName;
}
/**
* 根据业务值获取业务的中文名
*
* @param businessName
* @return
*/
public static String getBusinessCHN(String businessName) {
String nameCHN = null;
switch (businessName) {
case BUSINESS_NAME_COURSE:
nameCHN = "课程";
break;
case BUSINESS_NAME_TRAININGPROJECT:
nameCHN = "培训项目";
break;
case BUSINESS_NAME_EXAM:
nameCHN = "考试";
break;
case BUSINESS_NAME_ASSIGNMENT:
nameCHN = "作业";
break;
case BUSINESS_NAME_RESEARCH:
nameCHN = "调研";
break;
case BUSINESS_NAME_LIVE:
nameCHN = "直播";
break;
case BUSINESS_NAME_CASE:
nameCHN = "作品";
break;
case BUSINESS_NAME_CASEACTIVITY:
nameCHN = "原创活动";
break;
case BUSINESS_NAME_USER:
nameCHN = "用户";
break;
case BUSINESS_NAME_ALBUM:
nameCHN = "专辑";
break;
default:
break;
}
return nameCHN;
}
}
package com.yizhi.drools.application.drools.core;
/**
* @ClassName Carrier
* @Description 数据载体,
* O:origin-源数据
* C:condition-条件数据(判断依据)
* R:result-结果数据
* @Author shengchenglong
* @DATE 2019-11-19 15:11
* @Version 1.0
*/
public interface Carrier<Origin, Condition, Result> {
Condition getCondition();
Origin getOrigin();
Result getResult();
}
package com.yizhi.drools.application.feign;
import com.yizhi.drools.application.vo.drools.AccountVo4ManageParam;
import com.yizhi.drools.application.vo.drools.AccountVo4ManageResponse;
import com.yizhi.drools.application.vo.drools.BusinessVo4PortalParam;
import com.yizhi.drools.application.vo.drools.BusinessVo4PortalResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @ClassName RecommendClient
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-31 15:16
* @Version 1.0
*/
@FeignClient(value = "esearch", contextId = "RecommendClient")
public interface RecommendClient {
@PostMapping("/recommend/recommend4Manage")
BusinessVo4PortalResponse recommend4Manage(@RequestBody BusinessVo4PortalParam param);
@PostMapping("/recommend/recommend4Portal")
BusinessVo4PortalResponse recommend4Portal(@RequestBody BusinessVo4PortalParam param);
@PostMapping("/recommend/recommend4ManageAccount")
AccountVo4ManageResponse recommend4ManageAccount(@RequestBody AccountVo4ManageParam param);
}
package com.yizhi.drools.application.feign;
import com.yizhi.drools.application.vo.drools.BusinessVo4PortalParam;
import com.yizhi.drools.application.vo.drools.BusinessVo4PortalResponse;
import com.yizhi.drools.application.vo.manage.StrategyPageVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
/**
* @ClassName RecommendStrategyClient
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-26 16:13
* @Version 1.0
*/
@FeignClient(name = "rules", contextId = "RecommendStrategyClient")
public interface RecommendStrategyClient {
@PostMapping("/manage/recommendStrategy/list4PortalConfig")
Map<Long, StrategyPageVo> list4PortalConfig(@RequestBody List<Long> strategyIds);
@PostMapping("/manage/recommendStrategy/businessVo4Portal")
BusinessVo4PortalResponse businessVo4Portal(@RequestBody BusinessVo4PortalParam param);
@PostMapping("/manage/recommendStrategy/businessVo4Manage")
BusinessVo4PortalResponse businessVo4Manage(@RequestBody BusinessVo4PortalParam param);
}
//package com.fulan.drools.validator.constraint;
//
//import javax.validation.Constraint;
//import javax.validation.Payload;
//import java.lang.annotation.ElementType;
//import java.lang.annotation.Retention;
//import java.lang.annotation.RetentionPolicy;
//import java.lang.annotation.Target;
//
///**
// * @ClassName StrategyTime
// * @Description TODO
// * @Author shengchenglong
// * @DATE 2019-12-05 11:19
// * @Version 1.0
// */
//@Target(ElementType.FIELD)
//@Retention(RetentionPolicy.RUNTIME)
//@Constraint(validatedBy = StrategyTimeConstraintValidator.class)
//public @interface StrategyTime {
//
// String message() default "";
//
// Class<?>[] groups() default { };
//
// Class<? extends Payload>[] payload() default { };
//
//}
//package com.fulan.drools.validator.constraint;
//
//import javax.validation.ConstraintValidator;
//import javax.validation.ConstraintValidatorContext;
//import java.util.Date;
//
///**
// * @ClassName StrategyTimeConstraintValidator
// * @Description TODO
// * @Author shengchenglong
// * @DATE 2019-12-05 11:19
// * @Version 1.0
// */
//public class StrategyTimeConstraintValidator implements ConstraintValidator<StrategyTime, Date> {
//
// @Override
// public void initialize(StrategyTime constraintAnnotation) {
//
// }
//
// @Override
// public boolean isValid(Date time, ConstraintValidatorContext context) {
//
//
// return false;
// }
//}
package com.yizhi.drools.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author shengchenglong
* @since 2019-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Api(tags = "RecommendRuleItemVo")
@TableName("recommend_rule_item")
public class RecommendRuleItemVo extends Model<RecommendRuleItemVo> {
private static final long serialVersionUID = 1L;
private Long id;
@TableField("rule_id")
private Long ruleId;
@ApiModelProperty(value = "搜索对象类型名")
@TableField("class_name")
private String className;
@ApiModelProperty(value = "business 类型")
@TableField("business")
private String business;
@ApiModelProperty(value = "搜索属性名称")
@TableField("property_name")
private String propertyName;
@ApiModelProperty(value = "1:contains; 2:notContains; 3:equals; 4:notEquals;")
private String relation;
@ApiModelProperty(value = "搜索值(这里注意:contains类似关键词,equals可能是一个指定的id)")
@TableField("target_val")
private String targetVal;
@ApiModelProperty(value = "target_val 为id时,记录name,回显用")
private String name;
@ApiModelProperty(value = "1:内容规则,2:用户规则")
private Integer type;
@ApiModelProperty(value = "and or(与上一条规则详情的逻辑关系,第一条、仅有一条、都为and)")
@TableField("and_or")
private String andOr;
@TableLogic
@ApiModelProperty(value = "1:已删除,0未删除")
private Integer deleted;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "组织id")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "企业id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.UPDATE)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.UPDATE)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.drools.application.vo.domain;
//package com.fulan.drools.domain;
//
//import com.baomidou.mybatisplus.activerecord.Model;
//import com.baomidou.mybatisplus.annotations.TableField;
//import com.baomidou.mybatisplus.annotations.TableName;
//import com.baomidou.mybatisplus.enums.FieldFill;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiModelProperty;
//import lombok.Data;
//import lombok.EqualsAndHashCode;
//
//import java.io.Serializable;
//import java.util.Date;
//
//
///**
// * <p>
// *
// * </p>
// *
// * @author shengchenglong123
// * @since 2019-11-28
// */
//
//@Data
//@EqualsAndHashCode(callSuper = true)
//@Api(tags = "RecommendRuleRuleItem", description = "")
//@TableName("recommend_rule_rule_item")
//public class RecommendRuleRuleItem extends Model<RecommendRuleRuleItem> {
//
// private static final long serialVersionUID = 1L;
//
//
// @ApiModelProperty(value = "主键id")
// private Long id;
//
// @TableField("rule_id")
// private Long ruleId;
//
// @TableField("rule_item_id")
// private Long ruleItemId;
//
// @ApiModelProperty(value = "and or(与上一条规则详情的逻辑关系,第一条、仅有一条、都为and)")
// @TableField("and_or")
// private String andOr;
//
// @ApiModelProperty(value = "排序")
// private Integer sort;
//
// private Integer deleted;
//
// @ApiModelProperty(value = "创建者id")
// @TableField(value = "create_by_id", fill = FieldFill.INSERT)
// private Long createById;
//
// @ApiModelProperty(value = "创建者名称")
// @TableField(value = "create_by_name", fill = FieldFill.INSERT)
// private String createByName;
//
// @ApiModelProperty(value = "创建时间")
// @TableField(value = "create_time", fill = FieldFill.INSERT)
// private Date createTime;
//
// @ApiModelProperty(value = "更新者id")
// @TableField(value = "update_by_id", fill = FieldFill.UPDATE)
// private Long updateById;
//
// @ApiModelProperty(value = "修改者名称")
// @TableField(value = "update_by_name", fill = FieldFill.UPDATE)
// private String updateByName;
//
// @ApiModelProperty(value = "修改时间")
// @TableField(value = "update_time", fill = FieldFill.UPDATE)
// private Date updateTime;
//
//
// @Override
// protected Serializable pkVal() {
// return this.id;
// }
//
//}
package com.yizhi.drools.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author shengchenglong
* @since 2019-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Api(tags = "RecommendRuleVo")
@TableName("recommend_rule")
public class RecommendRuleVo extends Model<RecommendRuleVo> {
private static final long serialVersionUID = 1L;
private Long id;
@ApiModelProperty("规则名称")
private String name;
@ApiModelProperty("是否是模板:0否,1是")
private Integer template;
@ApiModelProperty(value = "1:内容规则,2:用户规则")
private Integer type;
@ApiModelProperty(value = "1:已删除,0未删除")
@TableLogic
private Integer deleted;
@ApiModelProperty(value = "组织id")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "企业id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.UPDATE)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.UPDATE)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.drools.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author shengchenglong123
* @since 2019-11-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Api(tags = "RecommendStrategyRuleVo")
@TableName("recommend_strategy_rule")
public class RecommendStrategyRuleVo extends Model<RecommendStrategyRuleVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@TableField("strategy_id")
private Long strategyId;
@TableField("rule_id")
private Long ruleId;
@ApiModelProperty(value = "and or(与上一条规则详情的逻辑关系,第一条、仅有一条、都为and)")
@TableField("and_or")
private String andOr;
@ApiModelProperty(value = "排序")
private Integer sort;
private Integer deleted;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.UPDATE)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.UPDATE)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.drools.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author shengchenglong
* @since 2019-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Api(tags = "RecommendStrategyVo")
@TableName("recommend_strategy")
public class RecommendStrategyVo extends Model<RecommendStrategyVo> {
private static final long serialVersionUID = 1L;
private Long id;
@ApiModelProperty(value = "策略名称")
private String name;
@ApiModelProperty(value = "1:长期,2:自定义")
@TableField("time_type")
private Integer timeType;
@ApiModelProperty(value = "开始时间")
@TableField("start_time")
private Date startTime;
@ApiModelProperty(value = "结束时间")
@TableField("end_time")
private Date endTime;
@TableLogic
@ApiModelProperty(value = "1:已删除,0未删除")
private Integer deleted;
@ApiModelProperty(value = "组织id")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "企业id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.UPDATE)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.UPDATE)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.drools.application.vo.drools;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName AccountVo4Manage
* @Description TODO
* @Author shengchenglong
* @DATE 2020-06-01 16:58
* @Version 1.0
*/
@Data
@ApiModel("用户vo")
public class AccountVo4Manage {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("序号")
private Integer num;
@ApiModelProperty("账号名称")
private String name;
@ApiModelProperty("全名")
private String fullName;
@ApiModelProperty("手机号")
private String mobile;
@ApiModelProperty("职位")
private String position;
}
package com.yizhi.drools.application.vo.drools;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.drools.application.vo.manage.RuleVo;
import lombok.Data;
import java.util.List;
/**
* @ClassName BusinessVo4PortalParam
* @Description TODO
* @Author shengchenglong
* @DATE 2020-01-02 18:18
* @Version 1.0
*/
@Data
public class AccountVo4ManageParam {
private static final long serialVersionUID = 1L;
private Integer pageNo;
private Integer pageSize;
private List<RuleVo> ruleVos;
/**
* 仅在管理端搜索内容时用
*/
private String keyword;
private RequestContext requestContext;
}
package com.yizhi.drools.application.vo.drools;
import lombok.Data;
import java.util.List;
/**
* @ClassName BusinessVo4PortalResponse
* @Description TODO
* @Author shengchenglong
* @DATE 2020-01-02 18:20
* @Version 1.0
*/
@Data
public class AccountVo4ManageResponse {
private static final long serialVersionUID = 1L;
private Integer pageNo;
private Integer pageSize;
private Integer total;
private List<AccountVo4Manage> list;
}
package com.yizhi.drools.application.vo.drools;
import lombok.Data;
/**
* @ClassName BusinessVo4Portal
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-31 14:55
* @Version 1.0
*/
@Data
public class BusinessVo4Portal {
private static final long serialVersionUID = 1L;
private Long id;
private String image;
private String name;
private String type;
private String code;
}
package com.yizhi.drools.application.vo.drools;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.drools.application.vo.manage.RuleVo;
import lombok.Data;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName BusinessVo4PortalParam
* @Description TODO
* @Author shengchenglong
* @DATE 2020-01-02 18:18
* @Version 1.0
*/
@Data
public class BusinessVo4PortalParam {
private static final long serialVersionUID = 1L;
private Integer pageNo;
private Integer pageSize;
private List<Long> strategyIds;
private List<RuleVo> ruleVos;
/**
* 仅在管理端搜索内容时用
*/
private String keyword;
/**
* 仅在管理端搜索内容时用
*/
private String business;
private RequestContext requestContext;
private Map<Long, List<RuleVo>> strategyRuleVoMap = new HashMap<>();
}
package com.yizhi.drools.application.vo.drools;
import lombok.Data;
import java.util.List;
/**
* @ClassName BusinessVo4PortalResponse
* @Description TODO
* @Author shengchenglong
* @DATE 2020-01-02 18:20
* @Version 1.0
*/
@Data
public class BusinessVo4PortalResponse {
private static final long serialVersionUID = 1L;
private Integer pageNo;
private Integer pageSize;
private Integer total;
private List<BusinessVo4Portal> list;
}
package com.yizhi.drools.application.vo.drools;
import lombok.Data;
/**
* @ClassName UserRuleVo
* @Description TODO
* @Author shengchenglong
* @DATE 2019-11-27 15:27
* @Version 1.0
*/
@Data
public class UserRuleVo {
}
package com.yizhi.drools.application.vo.manage;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
* @ClassName RuleContentRange
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-25 16:13
* @Version 1.0
*/
@Data
@ApiModel("规则内容 - vo")
public class RuleContentRangeVo {
private static final long serialVersionUID = 1L;
private Long id;
private Integer num;
private String code;
private String business;
private String content;
}
package com.yizhi.drools.application.vo.manage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @ClassName RuleTemplateSave
* @Description TODO
* @Author shengchenglong
* @DATE 2019-11-28 11:28
* @Version 1.0
*/
@Data
@ApiModel("规则item - vo")
public class RuleItemVo implements Comparable<RuleItemVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty("业务类型")
private String business;
private String businessClassName;
@NotBlank(message = "property:属性类型不能为空")
@ApiModelProperty("属性类型")
private String property;
// @NotBlank(message = "relation:关系类型不能为空")
@ApiModelProperty("关系类型")
private String relation;
@ApiModelProperty("匹配值")
private String value;
@ApiModelProperty("当value为id时,记录下选择的内容的名称")
private String name;
@NotNull(message = "sort:排序不能为空")
@ApiModelProperty("排序")
private Integer sort;
@NotBlank(message = "andOr:逻辑关系不能为空")
@ApiModelProperty("逻辑关系")
private String andOr;
@Override
public int compareTo(RuleItemVo ruleTemplateSave) {
return this.sort - ruleTemplateSave.getSort();
}
}
package com.yizhi.drools.application.vo.manage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @ClassName RulePageVo
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-04 14:31
* @Version 1.0
*/
@Data
@ApiModel("规则引用列表vo")
public class RulePageVo {
private static final long serialVersionUID = 1L;
@ApiModelProperty("规则id")
private Long id;
@ApiModelProperty("规则名称")
private String name;
@ApiModelProperty("创建时间")
private Date createTime;
}
package com.yizhi.drools.application.vo.manage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @ClassName RuleTemplateSaveList
* @Description TODO
* @Author shengchenglong
* @DATE 2019-11-28 15:16
* @Version 1.0
*/
@Data
@ApiModel("规则 - vo")
public class RuleVo {
private static final long serialVersionUID = 1L;
@ApiModelProperty("规则id,修改必传")
private Long id;
@ApiModelProperty("规则名称,引用规则可不传")
private String name;
@ApiModelProperty("注意:该id为引用规则的id,如果该值不为空,则后台处理直接引用,不管以下type和list传入任何值(保存为模板可不传)")
private Long quoteRuleId;
@ApiModelProperty(value = "and or(与上一条规则详情的逻辑关系,第一条、仅有一条、都为and)(保存为模板可不传,保存为单条内容规则可不传)")
private String andOr;
@NotNull(message = "sort:排序不能为空")
@ApiModelProperty("排序(保存为模板可不传)")
private Integer sort;
@NotNull(message = "type:参数不能为空")
@Range(min = 1, max = 2, message = "可选值:1内容规则,2用户规则")
@ApiModelProperty("类型:1内容规则,2用户规则")
private Integer type;
@Valid
@NotEmpty(message = "list:参数不能为空")
@ApiModelProperty("规则item - 保存vo集合")
private List<RuleItemVo> list;
@ApiModelProperty("回显用:是否是模板,如果是模板,则不允许修改")
private boolean template;
}
package com.yizhi.drools.application.vo.manage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @ClassName StrategyPageVo
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-05 20:03
* @Version 1.0
*/
@ApiModel("推荐策略列表vo")
@Data
public class StrategyPageVo {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("策略名称")
private String name;
@ApiModelProperty("开始时间")
private Date startTime;
@ApiModelProperty("结束时间")
private Date endTime;
@ApiModelProperty("创建时间")
private Date createTime;
}
package com.yizhi.drools.application.vo.manage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
/**
* @ClassName StratetgyVo
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-05 10:53
* @Version 1.0
*/
@Data
@ApiModel("策略保存vo")
public class StrategyVo {
private static final long serialVersionUID = 1L;
@ApiModelProperty("策略id,修改必传")
private Long id;
@NotEmpty(message = "策略名称不能为空")
@Size(max = 50, message = "策略名称50字以内")
@ApiModelProperty("策略名称")
private String strategyName;
@NotNull(message = "策略时段不能为空")
@Range(min = 1, max = 2, message = "策略时段选型错误:1:长期,2:自定义")
@ApiModelProperty(value = "策略时段:1:长期,2:自定义")
private Integer timeType;
@ApiModelProperty(value = "自定义时间:开始时间")
private Date startTime;
@ApiModelProperty(value = "自定义时间:结束时间")
private Date endTime;
@NotEmpty(message = "规则不能为空")
@ApiModelProperty("规则集合")
private List<RuleVo> ruleVos;
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud-drools</artifactId>
<groupId>com.yizhi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-drools-service</artifactId>
<dependencies>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-system-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-orm</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-drools-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- deploy 时跳过该模块 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yizhi.drools.application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @author shengchenglong
*/
@SpringBootApplication
@EnableTransactionManagement
@EnableDiscoveryClient
//@MapperScan("com.fulan.drools.mapper")
@EnableFeignClients(basePackages = "com.yizhi")
@ComponentScan(basePackages = {"com.yizhi"})
public class CloudDroolsApplication {
public static void main(String[] args) {
SpringApplication.run(CloudDroolsApplication.class, args);
}
}
package com.yizhi.drools.application;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @Author: shengchenglong
* @Date: 2018/3/6 14:30
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurerAdapter {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("规则引擎服务")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.yizhi.drools.application"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("drools")
//版本
.version("1.0")
.build();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("docs.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
package com.yizhi.drools.application.controller.manage;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
@RestController
@RequestMapping("/manage/recommendRuleItem")
public class RecommendRuleItemController {
}
package com.yizhi.drools.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author shengchenglong
* @since 2019-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Api(tags = "RecommendRuleVo")
@TableName("recommend_rule")
public class RecommendRule extends Model<RecommendRule> {
private static final long serialVersionUID = 1L;
private Long id;
@ApiModelProperty("规则名称")
private String name;
@ApiModelProperty("是否是模板:0否,1是")
private Integer template;
@ApiModelProperty(value = "1:内容规则,2:用户规则")
private Integer type;
@ApiModelProperty(value = "1:已删除,0未删除")
@TableLogic
private Integer deleted;
@ApiModelProperty(value = "组织id")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "企业id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.UPDATE)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.UPDATE)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.drools.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author shengchenglong
* @since 2019-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Api(tags = "RecommendRuleItemVo")
@TableName("recommend_rule_item")
public class RecommendRuleItem extends Model<RecommendRuleItem> {
private static final long serialVersionUID = 1L;
private Long id;
@TableField("rule_id")
private Long ruleId;
@ApiModelProperty(value = "搜索对象类型名")
@TableField("class_name")
private String className;
@ApiModelProperty(value = "business 类型")
@TableField("business")
private String business;
@ApiModelProperty(value = "搜索属性名称")
@TableField("property_name")
private String propertyName;
@ApiModelProperty(value = "1:contains; 2:notContains; 3:equals; 4:notEquals;")
private String relation;
@ApiModelProperty(value = "搜索值(这里注意:contains类似关键词,equals可能是一个指定的id)")
@TableField("target_val")
private String targetVal;
@ApiModelProperty(value = "target_val 为id时,记录name,回显用")
private String name;
@ApiModelProperty(value = "1:内容规则,2:用户规则")
private Integer type;
@ApiModelProperty(value = "and or(与上一条规则详情的逻辑关系,第一条、仅有一条、都为and)")
@TableField("and_or")
private String andOr;
@TableLogic
@ApiModelProperty(value = "1:已删除,0未删除")
private Integer deleted;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "组织id")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "企业id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.UPDATE)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.UPDATE)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.drools.application.domain;//package com.fulan.drools.domain;
//
//import com.baomidou.mybatisplus.activerecord.Model;
//import com.baomidou.mybatisplus.annotations.TableField;
//import com.baomidou.mybatisplus.annotations.TableName;
//import com.baomidou.mybatisplus.enums.FieldFill;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiModelProperty;
//import lombok.Data;
//import lombok.EqualsAndHashCode;
//
//import java.io.Serializable;
//import java.util.Date;
//
//
///**
// * <p>
// *
// * </p>
// *
// * @author shengchenglong123
// * @since 2019-11-28
// */
//
//@Data
//@EqualsAndHashCode(callSuper = true)
//@Api(tags = "RecommendRuleRuleItem", description = "")
//@TableName("recommend_rule_rule_item")
//public class RecommendRuleRuleItem extends Model<RecommendRuleRuleItem> {
//
// private static final long serialVersionUID = 1L;
//
//
// @ApiModelProperty(value = "主键id")
// private Long id;
//
// @TableField("rule_id")
// private Long ruleId;
//
// @TableField("rule_item_id")
// private Long ruleItemId;
//
// @ApiModelProperty(value = "and or(与上一条规则详情的逻辑关系,第一条、仅有一条、都为and)")
// @TableField("and_or")
// private String andOr;
//
// @ApiModelProperty(value = "排序")
// private Integer sort;
//
// private Integer deleted;
//
// @ApiModelProperty(value = "创建者id")
// @TableField(value = "create_by_id", fill = FieldFill.INSERT)
// private Long createById;
//
// @ApiModelProperty(value = "创建者名称")
// @TableField(value = "create_by_name", fill = FieldFill.INSERT)
// private String createByName;
//
// @ApiModelProperty(value = "创建时间")
// @TableField(value = "create_time", fill = FieldFill.INSERT)
// private Date createTime;
//
// @ApiModelProperty(value = "更新者id")
// @TableField(value = "update_by_id", fill = FieldFill.UPDATE)
// private Long updateById;
//
// @ApiModelProperty(value = "修改者名称")
// @TableField(value = "update_by_name", fill = FieldFill.UPDATE)
// private String updateByName;
//
// @ApiModelProperty(value = "修改时间")
// @TableField(value = "update_time", fill = FieldFill.UPDATE)
// private Date updateTime;
//
//
// @Override
// protected Serializable pkVal() {
// return this.id;
// }
//
//}
package com.yizhi.drools.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author shengchenglong
* @since 2019-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Api(tags = "RecommendStrategyVo")
@TableName("recommend_strategy")
public class RecommendStrategy extends Model<RecommendStrategy> {
private static final long serialVersionUID = 1L;
private Long id;
@ApiModelProperty(value = "策略名称")
private String name;
@ApiModelProperty(value = "1:长期,2:自定义")
@TableField("time_type")
private Integer timeType;
@ApiModelProperty(value = "开始时间")
@TableField("start_time")
private Date startTime;
@ApiModelProperty(value = "结束时间")
@TableField("end_time")
private Date endTime;
@TableLogic
@ApiModelProperty(value = "1:已删除,0未删除")
private Integer deleted;
@ApiModelProperty(value = "组织id")
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "企业id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.UPDATE)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.UPDATE)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.drools.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author shengchenglong123
* @since 2019-11-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Api(tags = "RecommendStrategyRuleVo")
@TableName("recommend_strategy_rule")
public class RecommendStrategyRule extends Model<RecommendStrategyRule> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@TableField("strategy_id")
private Long strategyId;
@TableField("rule_id")
private Long ruleId;
@ApiModelProperty(value = "and or(与上一条规则详情的逻辑关系,第一条、仅有一条、都为and)")
@TableField("and_or")
private String andOr;
@ApiModelProperty(value = "排序")
private Integer sort;
private Integer deleted;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.UPDATE)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.UPDATE)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.drools.application.exception;
import com.yizhi.util.application.domain.Response;
import lombok.extern.log4j.Log4j2;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName GlobalExecptionHandler
* @Description TODO
* @Author shengchenglong
* @DATE 2019-11-28 15:57
* @Version 1.0
*/
@ControllerAdvice
@ResponseBody
@Log4j2
public class GlobalExecptionHandler {
/**
* 分隔符
*/
private static final String SEPARATOR = ",";
/**
* 拦截数据校验异常
*
* @param request 请求
* @param e 校验异常
* @return 通用返回格式
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public Response notValidException(HttpServletRequest request, MethodArgumentNotValidException e) {
e.printStackTrace();
BindingResult bindingResult = e.getBindingResult();
List<String> errorMsgList = new ArrayList();
for (FieldError fieldError : bindingResult.getFieldErrors()) {
errorMsgList.add(fieldError.getDefaultMessage());
}
return Response.fail(errorMsgList.toString());
}
}
package com.yizhi.drools.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.drools.application.domain.RecommendRuleItem;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
public interface RecommendRuleItemMapper extends BaseMapper<RecommendRuleItem> {
@Select("<script>" +
"select * from " +
"recommend_rule_item " +
"where rule_id = #{ruleId} and deleted = 0 " +
"<if test=\"business != null and business != ''\"> " +
"and business = #{business} " +
"</if>" +
"order by sort " +
"</script>")
List<RecommendRuleItem> listByRuleId(@Param("ruleId") Long ruleId, @Param("business") String business);
}
package com.yizhi.drools.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.drools.application.domain.RecommendRule;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
public interface RecommendRuleMapper extends BaseMapper<RecommendRule> {
@Select("select * " +
"from recommend_rule r " +
"left join recommend_strategy_rule sr on sr.rule_id = r.id " +
"where r.deleted = 0 and sr.deleted = 0 and sr.strategy_id = #{strategyId} ")
List<RecommendRule> listByStrategyId(@Param("strategyId") Long strategyId);
@Select("<script>" +
"select id " +
"from recommend_rule " +
"where template = #{template} and deleted = 0 " +
"and id in (<foreach item=\"ruleId\" collection=\"ruleIds\" separator=\",\"> " +
"#{ruleId} " +
"</foreach>) " +
"</script>")
List<Long> listTemplateYesOrNoRuleIds(@Param("ruleIds") List<Long> ruleIds, @Param("template") Integer template);
}
//package com.fulan.drools.mapper;
//
//import com.baomidou.mybatisplus.mapper.BaseMapper;
//import com.fulan.drools.domain.RecommendRuleRuleItem;
//
///**
// * <p>
// * Mapper 接口
// * </p>
// *
// * @author shengchenglong123
// * @since 2019-11-28
// */
//public interface RecommendRuleRuleItemMapper extends BaseMapper<RecommendRuleRuleItem> {
//
//}
package com.yizhi.drools.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.drools.application.domain.RecommendStrategy;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.session.RowBounds;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
public interface RecommendStrategyMapper extends BaseMapper<RecommendStrategy> {
@Select("<script>" +
"select * " +
"from recommend_strategy str " +
"left join recommend_strategy_rule strr on strr.strategy_id = str.id " +
"where strr.deleted = 0 and str.deleted = 0 " +
"and strr.rule_id = #{ruleId} " +
"<if test=\"name != null and name != ''\"> " +
"and str.name like concat(\"%\", #{name}, \"%\") " +
"</if> " +
"</script>")
List<RecommendStrategy> listByNameAndRuleId(@Param("name") String name, @Param("ruleId") Long ruleId, RowBounds rowBounds);
@Select("<script>" +
"select count(1) " +
"from recommend_strategy str " +
"left join recommend_strategy_rule strr on strr.strategy_id = str.id " +
"where strr.deleted = 0 and str.deleted = 0 " +
"and strr.rule_id = #{ruleId} " +
"<if test=\"name != null and name != ''\"> " +
"and str.name like concat(\"%\", #{name}, \"%\") " +
"</if> " +
"</script>")
int countListByNameAndRuleId(@Param("name") String name, @Param("ruleId") Long ruleId);
}
package com.yizhi.drools.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.drools.application.domain.RecommendStrategyRule;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author shengchenglong123
* @since 2019-11-28
*/
public interface RecommendStrategyRuleMapper extends BaseMapper<RecommendStrategyRule> {
/**
* 获取策略下的规则的id
*
* @param strategyId
* @return
*/
@Select("select rule_id " +
"from recommend_strategy_rule " +
"where strategy_id = #{strategyId} and deleted = 0 " +
"order by sort")
List<Long> getRuleIds(@Param("strategyId") Long strategyId);
/**
* 根据策略id查询 策略-规则 关联
*
* @param strategyId
* @return
*/
@Select("select * " +
"from recommend_strategy_rule " +
"where strategy_id = #{strategyId} and deleted = 0 " +
"order by sort")
List<RecommendStrategyRule> listByStrategyId(@Param("strategyId") Long strategyId);
}
package com.yizhi.drools.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.drools.application.domain.RecommendRuleItem;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
public interface IRecommendRuleItemService extends IService<RecommendRuleItem> {
List<RecommendRuleItem> listByRuleId(Long ruleId, String business);
}
package com.yizhi.drools.application.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.drools.application.constant.DroolsConstants;
import com.yizhi.drools.application.domain.RecommendRule;
import com.yizhi.drools.application.vo.manage.RuleVo;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
public interface IRecommendRuleService extends IService<RecommendRule> {
/**
* 添加规则
*
* @param ruleVo
* @param isTemplate
* @return 内容规则的id
* @see DroolsConstants
*/
Long update(RuleVo ruleVo, Integer isTemplate);
/**
* 修改规则
*
* @param ruleVo
* @param isTemplate
* @return
*/
Long insert(RuleVo ruleVo, Integer isTemplate);
/**
* 规则引用列表
*
* @param type
* @return
*/
Page<RecommendRule> selectPageByTypeAndName(Page<RecommendRule> page, Integer type, String name);
List<RuleVo> listRuleVosByStrategyId(Long strategyId, boolean withClassName, String business);
boolean copy(Long ruleId);
Page getVisibleRange(Long id, String keyWord, Integer pageNo, Integer pageSize);
}
package com.yizhi.drools.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.drools.application.domain.RecommendStrategyRule;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author shengchenglong123
* @since 2019-11-28
*/
public interface IRecommendStrategyRuleService extends IService<RecommendStrategyRule> {
List<RecommendStrategyRule> listByStrategyId(Long strategyId);
List<Long> getRuleIds(Long strategyId);
}
package com.yizhi.drools.application.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.drools.application.domain.RecommendStrategy;
import com.yizhi.drools.application.vo.manage.StrategyPageVo;
import com.yizhi.drools.application.vo.manage.StrategyVo;
/**
* <p>
* 服务类
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
public interface IRecommendStrategyService extends IService<RecommendStrategy> {
boolean save(StrategyVo strategyVo) throws Exception;
boolean copy(Long id) throws Exception;
boolean delete(Long id);
Page<StrategyPageVo> pageByNameAndRuleId(String name, Long ruleId, Page page);
Page getVisibleRange(Long id, String keyWord, Integer pageNo, Integer pageSize);
}
package com.yizhi.drools.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.drools.application.domain.RecommendRuleItem;
import com.yizhi.drools.application.mapper.RecommendRuleItemMapper;
import com.yizhi.drools.application.service.IRecommendRuleItemService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class RecommendRuleItemServiceImpl extends ServiceImpl<RecommendRuleItemMapper, RecommendRuleItem> implements IRecommendRuleItemService {
@Override
public List<RecommendRuleItem> listByRuleId(Long ruleId, String business) {
return this.baseMapper.listByRuleId(ruleId, business);
}
}
package com.yizhi.drools.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.drools.application.domain.RecommendStrategyRule;
import com.yizhi.drools.application.mapper.RecommendStrategyRuleMapper;
import com.yizhi.drools.application.service.IRecommendStrategyRuleService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author shengchenglong123
* @since 2019-11-28
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class RecommendStrategyRuleServiceImpl extends ServiceImpl<RecommendStrategyRuleMapper, RecommendStrategyRule> implements IRecommendStrategyRuleService {
@Override
public List<Long> getRuleIds(Long strategyId) {
return this.baseMapper.getRuleIds(strategyId);
}
@Override
public List<RecommendStrategyRule> listByStrategyId(Long strategyId) {
return this.baseMapper.listByStrategyId(strategyId);
}
}
package com.yizhi.drools.application.util;
import com.baomidou.mybatisplus.annotations.TableField;
import com.yizhi.core.application.context.ContextHolder;
import com.yizhi.core.application.context.RequestContext;
import lombok.extern.slf4j.Slf4j;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* @ClassName ContextUtil
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-04 14:06
* @Version 1.0
*/
@Slf4j
public class ContextUtil {
/**
* 拼装 orgId,siteId,companyId
* @param o
*/
public static void buildTenantEntity4Insert(Object o) {
RequestContext context = ContextHolder.get();
if (context == null) {
context = new RequestContext();
context.setOrgId(0L);
context.setSiteId(0L);
context.setCompanyId(0L);
}
try {
Class clazz = o.getClass();
// orgId
Field field = clazz.getDeclaredField("orgId");
Annotation annotation = field.getAnnotation(TableField.class);
Method method;
if (annotation != null) {
method = clazz.getMethod("setOrgId", Long.class);
method.invoke(o, context.getOrgId());
}
// siteId
field = clazz.getDeclaredField("siteId");
annotation = field.getAnnotation(TableField.class);
if (annotation != null) {
method = clazz.getMethod("setSiteId", Long.class);
method.invoke(o, context.getSiteId());
}
// companyId
field = clazz.getDeclaredField("companyId");
annotation = field.getAnnotation(TableField.class);
if (annotation != null) {
method = clazz.getMethod("setCompanyId", Long.class);
method.invoke(o, context.getCompanyId());
}
} catch (NoSuchFieldException e) {
log.info(e.getLocalizedMessage());
} catch (NoSuchMethodException e) {
log.info(e.getLocalizedMessage());
} catch (IllegalAccessException e) {
log.info(e.getLocalizedMessage());
} catch (InvocationTargetException e) {
log.info(e.getLocalizedMessage());
}
}
/**
* 拼装 siteId,companyId
* @param o
*/
public static void buildTenantEntity4Select(Object o) {
RequestContext context = ContextHolder.get();
if (context == null) {
context = new RequestContext();
context.setSiteId(0L);
context.setCompanyId(0L);
}
try {
Class clazz = o.getClass();
// siteId
Field field = clazz.getDeclaredField("siteId");
Annotation annotation = field.getAnnotation(TableField.class);
Method method;
if (annotation != null) {
method = clazz.getMethod("setSiteId", Long.class);
method.invoke(o, context.getSiteId());
}
// companyId
field = clazz.getDeclaredField("companyId");
annotation = field.getAnnotation(TableField.class);
if (annotation != null) {
method = clazz.getMethod("setCompanyId", Long.class);
method.invoke(o, context.getCompanyId());
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
package com.yizhi.drools.application.util;
/**
* @ClassName QueryBuilderUtil
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-30 10:39
* @Version 1.0
*/
public class QueryBuilderUtil {
}
package com.yizhi.drools.application.util;
import com.baomidou.mybatisplus.plugins.Page;
import com.yizhi.util.application.domain.Response;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName ResponstUtil
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-04 15:00
* @Version 1.0
*/
public class ResponseUtil {
public static Response pageResponse4PageParam(Page originPage, List records) {
Map<String, Integer> pageMap = new HashMap<>();
pageMap.put("pageNo", originPage.getCurrent());
pageMap.put("pageSize", originPage.getSize());
pageMap.put("pageTotal", originPage.getTotal());
return Response.ok(records, pageMap);
}
}
<?xml version="1.0" encoding="utf-8" ?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<kbase name="recommend" packages="rules.recommend">
<ksession name="recommend"/>
</kbase>
</kmodule>
\ No newline at end of file
server.port=35900
spring.application.name=rules
ACTIVE=${spring.profiles.active}
spring.profiles.active=prod
# nacos
spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties
spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.server-addr=192.168.0.203:8848
\ No newline at end of file
{
"business": {
"course": "课程",
"trainingProject": "学习项目",
"exam": "考试",
"assignment": "作业",
"research": "调研",
"live": "直播",
"case": "作品",
"caseActivity": "原创活动",
"album": "专辑"
},
"property": {
"course": {
"name": "名称",
"code": "编码",
"classify": "分类",
"keyword": "关键词",
"all": "全部"
},
"trainingProject": {
"name": "名称",
"classify": "分类",
"keyword": "关键词",
"all": "全部"
},
"exam": {
"name": "名称",
"keyword": "关键词",
"all": "全部"
},
"assignment": {
"name": "名称",
"keyword": "关键词",
"all": "全部"
},
"research": {
"name": "名称",
"keyword": "关键词",
"all": "全部"
},
"live": {
"name": "主题",
"code": "直播号",
"keyword": "关键词",
"anchorName": "主播名称",
"all": "全部"
},
"case": {
"name": "名称",
"classify": "分类",
"keyword": "关键词",
"belongCaseActivity": "所属案例活动",
"author": "作者",
"all": "全部"
},
"caseActivity": {
"name": "名称",
"classify": "分类",
"keyword": "关键词",
"all": "全部"
},
"album": {
"name": "名称",
"classify": "分类",
"keyword": "关键词",
"all": "全部"
},
"user": {
"fullName": "姓名",
"duty": "职务",
"org": "所在部门",
"remark1": "备注1",
"remark2": "备注2",
"remark3": "备注3",
"all": "全部"
}
},
"relation": {
"contains": "包含",
"notContains": "不包含",
"equals": "等于",
"notEquals": "不等于"
}
}
\ No newline at end of file
package rules.recommend
import com.fulan.application.domain.RecommendRule
rule "course"
when
then
end
package com.fulan.application;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.drools.application.controller.manage.RecommendRuleController;
import com.yizhi.drools.application.controller.manage.RecommendStrategyController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: shengchenglong
* @Date: 2018/6/6 10:07
*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class CloudDroolsApplicationTest {
@Autowired
private RecommendRuleController recommendRuleController;
@Autowired
private RecommendStrategyController strategyController;
@Test
public void test1() {
// 获取json
// recommendRuleController.getJson();
// 规则引用
// recommendRuleController.ruleQuotePage(1, "st", 1, 10);
ArrayList<Long> ids = new ArrayList<>();
ids.add(1211644153810829312L);
// recommendRuleController.getContentRuleById(ids);
// recommendRuleController.businessVo4Portal(ids);
}
@Test
public void test2() {
// recommendRuleController.page(1, null, 1, 10);
// strategyController.listPage(null, null, null, 2, 1);
// recommendRuleController.strategyPage(1209094208227037184L, null, 1, 10);
Map<String, String> map = new HashMap<>();
map.put("id", "1209068925532950529");
RequestContext context = new RequestContext();
context.setCompanyId(0L);
context.setSiteId(0L);
context.setOrgId(0L);
recommendRuleController.copy((HashMap<String, String>) map);
}
}
package com.fulan.application;
import com.yizhi.drools.application.vo.manage.RuleItemVo;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @Author: shengchenglong
* @Date: 2018/6/6 10:07
*/
public class SingleTest {
@Test
public void test1() {
RuleItemVo save = new RuleItemVo();
save.setSort(0);
RuleItemVo save1 = new RuleItemVo();
save1.setSort(9);
RuleItemVo save2 = new RuleItemVo();
save2.setSort(3);
List<RuleItemVo> saves = new ArrayList<>();
saves.add(save);
saves.add(save1);
saves.add(save2);
Collections.sort(saves);
System.out.println(saves);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yizhi</groupId>
<artifactId>wmy-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath/>
</parent>
<groupId>com.yizhi</groupId>
<artifactId>cloud-drools</artifactId>
<version>1.0-SNAPSHOT</version>
<name>cloud-drools</name>
<packaging>pom</packaging>
<description>cloud-drools</description>
<modules>
<module>cloud-drools-api</module>
<module>cloud-drools-service</module>
</modules>
<repositories>
<repository>
<id>wmy4.0</id>
<url>http://mvn.km365.pw/nexus/content/groups/wmy4.0-group/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment