Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cloud-drools
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hqzhdj
cloud-drools
Commits
9a319eb7
Commit
9a319eb7
authored
Feb 09, 2021
by
liangkaiping
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
copy
parent
b9a5f749
Hide whitespace changes
Inline
Side-by-side
Showing
60 changed files
with
4156 additions
and
0 deletions
+4156
-0
cloud-drools-api/pom.xml
+59
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/constant/DroolsConstants.java
+162
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/drools/core/Carrier.java
+20
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/feign/RecommendClient.java
+30
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/feign/RecommendStrategyClient.java
+32
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/validator/constraint/StrategyTime.java
+28
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/validator/constraint/StrategyTimeConstraintValidator.java
+27
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendRuleItemVo.java
+116
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendRuleRuleItemVo.java
+83
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendRuleVo.java
+89
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendStrategyRuleVo.java
+80
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendStrategyVo.java
+96
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/AccountVo4Manage.java
+38
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/AccountVo4ManageParam.java
+34
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/AccountVo4ManageResponse.java
+27
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/BusinessVo4Portal.java
+27
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/BusinessVo4PortalParam.java
+45
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/BusinessVo4PortalResponse.java
+27
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/UserRuleVo.java
+16
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/RuleContentRangeVo.java
+29
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/RuleItemVo.java
+56
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/RulePageVo.java
+31
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/RuleVo.java
+55
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/StrategyPageVo.java
+37
-0
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/StrategyVo.java
+49
-0
cloud-drools-service/pom.xml
+75
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/CloudDroolsApplication.java
+26
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/SwaggerConfig.java
+49
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/controller/manage/RecommendRuleController.java
+359
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/controller/manage/RecommendRuleItemController.java
+20
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/controller/manage/RecommendStrategyController.java
+383
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendRule.java
+89
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendRuleItem.java
+116
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendRuleRuleItem.java
+82
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendStrategy.java
+96
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendStrategyRule.java
+80
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/exception/GlobalExecptionHandler.java
+51
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendRuleItemMapper.java
+31
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendRuleMapper.java
+35
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendRuleRuleItemMapper.java
+16
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendStrategyMapper.java
+45
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendStrategyRuleMapper.java
+44
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/IRecommendRuleItemService.java
+20
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/IRecommendRuleService.java
+55
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/IRecommendStrategyRuleService.java
+22
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/IRecommendStrategyService.java
+28
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/impl/RecommendRuleItemServiceImpl.java
+28
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/impl/RecommendRuleServiceImpl.java
+320
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/impl/RecommendStrategyRuleServiceImpl.java
+34
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/impl/RecommendStrategyServiceImpl.java
+350
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/util/ContextUtil.java
+117
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/util/QueryBuilderUtil.java
+11
-0
cloud-drools-service/src/main/java/com/yizhi/drools/application/util/ResponseUtil.java
+28
-0
cloud-drools-service/src/main/resources/META-INF/kmodule.xml
+10
-0
cloud-drools-service/src/main/resources/bootstrap.properties
+11
-0
cloud-drools-service/src/main/resources/rule.json
+86
-0
cloud-drools-service/src/main/resources/rules/recommend/recommend.drl
+11
-0
cloud-drools-service/src/test/java/com/fulan/application/CloudDroolsApplicationTest.java
+60
-0
cloud-drools-service/src/test/java/com/fulan/application/SingleTest.java
+37
-0
pom.xml
+38
-0
No files found.
cloud-drools-api/pom.xml
0 → 100644
View file @
9a319eb7
<?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
cloud-drools-api/src/main/java/com/yizhi/drools/application/constant/DroolsConstants.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/drools/core/Carrier.java
0 → 100644
View file @
9a319eb7
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
();
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/feign/RecommendClient.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/feign/RecommendStrategyClient.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/validator/constraint/StrategyTime.java
0 → 100644
View file @
9a319eb7
//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 { };
//
//}
cloud-drools-api/src/main/java/com/yizhi/drools/application/validator/constraint/StrategyTimeConstraintValidator.java
0 → 100644
View file @
9a319eb7
//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;
// }
//}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendRuleItemVo.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendRuleRuleItemVo.java
0 → 100644
View file @
9a319eb7
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;
// }
//
//}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendRuleVo.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendStrategyRuleVo.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/domain/RecommendStrategyVo.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/AccountVo4Manage.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/AccountVo4ManageParam.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/AccountVo4ManageResponse.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/BusinessVo4Portal.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/BusinessVo4PortalParam.java
0 → 100644
View file @
9a319eb7
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
<>();
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/BusinessVo4PortalResponse.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/drools/UserRuleVo.java
0 → 100644
View file @
9a319eb7
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
{
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/RuleContentRangeVo.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/RuleItemVo.java
0 → 100644
View file @
9a319eb7
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
();
}
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/RulePageVo.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/RuleVo.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/StrategyPageVo.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-api/src/main/java/com/yizhi/drools/application/vo/manage/StrategyVo.java
0 → 100644
View file @
9a319eb7
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
;
}
cloud-drools-service/pom.xml
0 → 100644
View file @
9a319eb7
<?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
cloud-drools-service/src/main/java/com/yizhi/drools/application/CloudDroolsApplication.java
0 → 100644
View file @
9a319eb7
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
);
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/SwaggerConfig.java
0 → 100644
View file @
9a319eb7
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/"
);
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/controller/manage/RecommendRuleController.java
0 → 100644
View file @
9a319eb7
package
com
.
yizhi
.
drools
.
application
.
controller
.
manage
;
import
com.alibaba.fastjson.JSONReader
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.drools.application.constant.DroolsConstants
;
import
com.yizhi.drools.application.domain.RecommendRule
;
import
com.yizhi.drools.application.domain.RecommendRuleItem
;
import
com.yizhi.drools.application.feign.RecommendClient
;
import
com.yizhi.drools.application.service.IRecommendRuleItemService
;
import
com.yizhi.drools.application.service.IRecommendRuleService
;
import
com.yizhi.drools.application.service.IRecommendStrategyRuleService
;
import
com.yizhi.drools.application.service.IRecommendStrategyService
;
import
com.yizhi.drools.application.util.ContextUtil
;
import
com.yizhi.drools.application.util.ResponseUtil
;
import
com.yizhi.drools.application.vo.drools.*
;
import
com.yizhi.drools.application.vo.manage.*
;
import
com.yizhi.util.application.domain.Response
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.io.InputStream
;
import
java.io.InputStreamReader
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* <p>
* 前端控制器
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
@Slf4j
@RestController
@RequestMapping
(
"/manage/recommendRule"
)
@Api
(
tags
=
"推荐规则 - 管理端接口"
)
public
class
RecommendRuleController
{
@Autowired
private
IRecommendRuleService
ruleService
;
@Autowired
private
IRecommendRuleItemService
ruleItemService
;
@Autowired
private
IRecommendStrategyRuleService
strategyRuleService
;
@Autowired
private
IRecommendStrategyService
strategyService
;
@Autowired
private
RecommendClient
recommendClient
;
@GetMapping
(
"/getJson"
)
public
Response
getJson
()
{
InputStream
ist
=
RecommendRuleController
.
class
.
getClassLoader
().
getResourceAsStream
(
"rule.json"
);
InputStreamReader
is
=
new
InputStreamReader
(
ist
);
JSONReader
jsonReader
=
new
JSONReader
(
is
);
Object
o
=
jsonReader
.
readObject
();
return
Response
.
ok
(
o
);
}
@PostMapping
(
"/template/save"
)
@ApiOperation
(
value
=
"规则保存(修改)模板, 然后返回内容规则的id"
)
public
Response
<
Long
>
templateSave
(
@ApiParam
@Validated
@RequestBody
RuleVo
ruleTemplateSave
)
{
Long
ruleId
;
if
(
ruleTemplateSave
.
getId
()
!=
null
)
{
ruleId
=
ruleService
.
update
(
ruleTemplateSave
,
DroolsConstants
.
TEMPLATE_YES
);
}
else
{
ruleId
=
ruleService
.
insert
(
ruleTemplateSave
,
DroolsConstants
.
TEMPLATE_YES
);
}
if
(
ruleId
!=
null
)
{
return
Response
.
ok
(
ruleId
);
}
return
Response
.
fail
();
}
@GetMapping
(
"/page"
)
@ApiOperation
(
value
=
"规则列表页(引用规则列表页)"
,
response
=
RulePageVo
.
class
)
public
Response
<
RulePageVo
>
page
(
@ApiParam
(
"规则类型,内容规则:1,用户规则:2"
)
@RequestParam
Integer
type
,
@ApiParam
@RequestParam
(
required
=
false
)
String
name
,
@RequestParam
(
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
defaultValue
=
"10"
)
Integer
pageSize
)
{
Page
<
RecommendRule
>
page
=
new
Page
<>(
pageNo
,
pageSize
);
page
=
ruleService
.
selectPageByTypeAndName
(
page
,
type
,
name
);
if
(
page
!=
null
)
{
List
<
RecommendRule
>
records
=
page
.
getRecords
();
if
(!
CollectionUtils
.
isEmpty
(
records
))
{
List
<
RulePageVo
>
list
=
new
ArrayList
<>();
records
.
forEach
(
item
->
{
RulePageVo
vo
=
new
RulePageVo
();
vo
.
setId
(
item
.
getId
());
vo
.
setCreateTime
(
item
.
getCreateTime
());
vo
.
setName
(
item
.
getName
());
list
.
add
(
vo
);
});
return
ResponseUtil
.
pageResponse4PageParam
(
page
,
list
);
}
}
return
Response
.
fail
();
}
@PostMapping
(
"/ids/get"
)
@ApiOperation
(
value
=
"根据规则id获取规则详情(回显)"
,
response
=
RuleItemVo
.
class
)
public
Response
<
RuleVo
>
getContentRuleById
(
@RequestBody
ArrayList
<
String
>
ruleIds
)
{
if
(
CollectionUtils
.
isEmpty
(
ruleIds
))
{
return
Response
.
ok
();
}
// 组装 RuleVo
RecommendRule
recommendRule
=
new
RecommendRule
();
ContextUtil
.
buildTenantEntity4Select
(
recommendRule
);
EntityWrapper
<
RecommendRule
>
ew
=
new
EntityWrapper
<>(
recommendRule
);
ew
.
in
(
"id"
,
ruleIds
);
List
<
RecommendRule
>
recommendRuleList
=
recommendRule
.
selectList
(
ew
);
if
(!
CollectionUtils
.
isEmpty
(
recommendRuleList
))
{
Map
<
Long
,
RuleVo
>
map
=
new
HashMap
<>();
RuleVo
ruleVo
;
for
(
RecommendRule
rule
:
recommendRuleList
)
{
ruleVo
=
new
RuleVo
();
ruleVo
.
setQuoteRuleId
(
rule
.
getId
());
ruleVo
.
setTemplate
(
true
);
ruleVo
.
setType
(
rule
.
getType
());
ruleVo
.
setList
(
new
ArrayList
<>());
ruleVo
.
setName
(
rule
.
getName
());
map
.
put
(
rule
.
getId
(),
ruleVo
);
}
// 组装 RuleItemVo
RecommendRuleItem
item
=
new
RecommendRuleItem
();
ContextUtil
.
buildTenantEntity4Select
(
item
);
EntityWrapper
<
RecommendRuleItem
>
itemEw
=
new
EntityWrapper
<>(
item
);
itemEw
.
in
(
"rule_id"
,
ruleIds
);
itemEw
.
orderBy
(
"sort"
);
List
<
RecommendRuleItem
>
items
=
item
.
selectList
(
itemEw
);
if
(!
CollectionUtils
.
isEmpty
(
items
))
{
RuleItemVo
ruleItemVo
;
for
(
RecommendRuleItem
recommendRuleItem
:
items
)
{
ruleItemVo
=
new
RuleItemVo
();
ruleItemVo
.
setSort
(
recommendRuleItem
.
getSort
());
ruleItemVo
.
setAndOr
(
recommendRuleItem
.
getAndOr
());
ruleItemVo
.
setBusiness
(
recommendRuleItem
.
getBusiness
());
ruleItemVo
.
setProperty
(
recommendRuleItem
.
getPropertyName
());
ruleItemVo
.
setRelation
(
recommendRuleItem
.
getRelation
());
ruleItemVo
.
setValue
(
recommendRuleItem
.
getTargetVal
());
ruleItemVo
.
setName
(
recommendRuleItem
.
getName
());
if
(
map
.
containsKey
(
recommendRuleItem
.
getRuleId
()))
{
map
.
get
(
recommendRuleItem
.
getRuleId
()).
getList
().
add
(
ruleItemVo
);
}
}
return
Response
.
ok
(
map
);
}
}
return
Response
.
fail
();
}
@ApiOperation
(
"规则复制"
)
@PostMapping
(
"/copy"
)
public
Response
copy
(
@RequestBody
HashMap
<
String
,
String
>
map
)
{
String
str
=
map
.
get
(
"id"
);
if
(
StringUtils
.
isEmpty
(
str
))
{
return
Response
.
fail
(
"4001"
,
"id不能为空"
);
}
Long
id
=
Long
.
valueOf
(
str
);
return
Response
.
ok
(
ruleService
.
copy
(
id
));
}
@ApiOperation
(
"删除规则"
)
@PostMapping
(
"/delete"
)
public
Response
delete
(
@ApiParam
@RequestBody
HashMap
<
String
,
String
>
map
)
{
String
str
=
map
.
get
(
"id"
);
if
(
StringUtils
.
isEmpty
(
str
))
{
return
Response
.
fail
(
"4001"
,
"id不能为空"
);
}
Long
id
=
Long
.
valueOf
(
str
);
// 先查看有没有跟本规则关联的策略
EntityWrapper
ew
=
new
EntityWrapper
();
ew
.
eq
(
"rule_id"
,
id
);
int
count
=
strategyRuleService
.
selectCount
(
ew
);
if
(
count
>
0
)
{
return
Response
.
fail
(
"4001"
,
"当前规则已被策略引用"
);
}
boolean
flag
=
ruleService
.
deleteById
(
id
);
if
(
flag
)
{
ew
=
new
EntityWrapper
();
ew
.
eq
(
"rule_id"
,
id
);
boolean
resFlag
=
ruleItemService
.
delete
(
ew
);
}
return
Response
.
ok
();
}
@ApiOperation
(
"查看关联活动(关联策略)"
)
@GetMapping
(
"/strategy/page"
)
public
Response
<
StrategyPageVo
>
strategyPage
(
@ApiParam
@RequestParam
(
"ruleId"
)
Long
ruleId
,
@ApiParam
@RequestParam
(
required
=
false
)
String
name
,
@RequestParam
(
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
defaultValue
=
"10"
)
Integer
pageSize
)
{
Page
<
StrategyPageVo
>
page
=
strategyService
.
pageByNameAndRuleId
(
name
,
ruleId
,
new
Page
(
pageNo
,
pageSize
));
if
(
page
!=
null
)
{
return
ResponseUtil
.
pageResponse4PageParam
(
page
,
page
.
getRecords
());
}
return
Response
.
fail
();
}
@ApiOperation
(
value
=
"查看规则范围"
,
response
=
RuleContentRangeVo
.
class
)
@GetMapping
(
"/content/range/page"
)
public
Response
<
RuleContentRangeVo
>
conteRangePage
(
@ApiParam
(
"id"
)
@RequestParam
(
"id"
)
Long
id
,
@ApiParam
(
"关键字"
)
@RequestParam
(
name
=
"keyword"
,
required
=
false
)
String
keyword
,
@ApiParam
(
"内容类型"
)
@RequestParam
(
name
=
"business"
,
required
=
false
)
String
business
,
@RequestParam
(
defaultValue
=
"1"
,
required
=
false
)
Integer
pageNo
,
@RequestParam
(
defaultValue
=
"10"
,
required
=
false
)
Integer
pageSize
)
{
RecommendRule
rule
=
ruleService
.
selectById
(
id
);
if
(
rule
==
null
)
{
return
Response
.
fail
(
"规则不存在"
);
}
EntityWrapper
ew
=
new
EntityWrapper
();
ew
.
eq
(
"rule_id"
,
id
);
if
(
StringUtils
.
isNotEmpty
(
business
))
{
ew
.
eq
(
"business"
,
business
);
}
ew
.
orderBy
(
"sort"
);
List
<
RecommendRuleItem
>
ruleList
=
ruleItemService
.
selectList
(
ew
);
if
(!
CollectionUtils
.
isEmpty
(
ruleList
))
{
List
<
RuleItemVo
>
ruleItemVos
=
new
ArrayList
<>(
ruleList
.
size
());
for
(
RecommendRuleItem
ruleItem
:
ruleList
)
{
RuleItemVo
itemVo
=
new
RuleItemVo
();
itemVo
.
setBusiness
(
ruleItem
.
getBusiness
());
itemVo
.
setAndOr
(
ruleItem
.
getAndOr
());
itemVo
.
setProperty
(
ruleItem
.
getPropertyName
());
itemVo
.
setRelation
(
ruleItem
.
getRelation
());
itemVo
.
setValue
(
ruleItem
.
getTargetVal
());
itemVo
.
setSort
(
ruleItem
.
getSort
());
itemVo
.
setName
(
ruleItem
.
getName
());
ruleItemVos
.
add
(
itemVo
);
}
BusinessVo4PortalParam
param
=
new
BusinessVo4PortalParam
();
List
<
RuleVo
>
ruleVos
=
new
ArrayList
<>();
RuleVo
ruleVo
=
new
RuleVo
();
ruleVo
.
setType
(
rule
.
getType
());
ruleVo
.
setAndOr
(
DroolsConstants
.
AND
);
ruleVo
.
setList
(
ruleItemVos
);
ruleVos
.
add
(
ruleVo
);
param
.
setRuleVos
(
ruleVos
);
param
.
setKeyword
(
keyword
);
param
.
setPageNo
(
pageNo
);
param
.
setPageSize
(
pageSize
);
param
.
setRequestContext
(
ContextHolder
.
get
());
BusinessVo4PortalResponse
response
=
recommendClient
.
recommend4Manage
(
param
);
log
.
info
(
"-------------------------------------------"
+
response
.
toString
());
Map
<
String
,
Integer
>
pageMap
=
new
HashMap
<>();
pageMap
.
put
(
"pageNo"
,
response
.
getPageNo
());
pageMap
.
put
(
"pageSize"
,
response
.
getPageSize
());
pageMap
.
put
(
"pageTotal"
,
response
.
getTotal
());
List
<
BusinessVo4Portal
>
vo4Portals
=
response
.
getList
();
if
(!
CollectionUtils
.
isEmpty
(
vo4Portals
))
{
List
<
RuleContentRangeVo
>
vos
=
new
ArrayList
<>(
vo4Portals
.
size
());
for
(
int
i
=
0
;
i
<
vo4Portals
.
size
();
i
++)
{
BusinessVo4Portal
p
=
vo4Portals
.
get
(
i
);
RuleContentRangeVo
vo
=
new
RuleContentRangeVo
();
vo
.
setNum
(
i
+
1
);
vo
.
setId
(
vo
.
getId
());
vo
.
setContent
(
p
.
getName
());
vo
.
setCode
(
p
.
getCode
());
vo
.
setBusiness
(
DroolsConstants
.
getBusinessCHN
(
p
.
getType
()));
vos
.
add
(
vo
);
}
return
Response
.
ok
(
vos
,
pageMap
);
}
}
return
Response
.
ok
();
}
@ApiOperation
(
"查看用户规则范围"
)
@GetMapping
(
"/getVisibleRangeToUser"
)
public
Response
getVisibleRange
(
@ApiParam
(
"规则id"
)
@RequestParam
(
"id"
)
Long
id
,
@ApiParam
(
"查询keyWord"
)
@RequestParam
(
value
=
"keyword"
,
required
=
false
)
String
keyword
,
@RequestParam
(
defaultValue
=
"1"
,
required
=
false
)
Integer
pageNo
,
@RequestParam
(
defaultValue
=
"10"
,
required
=
false
)
Integer
pageSize
)
{
RecommendRule
rule
=
ruleService
.
selectById
(
id
);
if
(
rule
==
null
)
{
return
Response
.
fail
(
"规则不存在"
);
}
EntityWrapper
ew
=
new
EntityWrapper
();
ew
.
eq
(
"rule_id"
,
id
);
ew
.
orderBy
(
"sort"
);
List
<
RecommendRuleItem
>
ruleList
=
ruleItemService
.
selectList
(
ew
);
if
(!
CollectionUtils
.
isEmpty
(
ruleList
))
{
List
<
RuleItemVo
>
ruleItemVos
=
new
ArrayList
<>(
ruleList
.
size
());
for
(
RecommendRuleItem
ruleItem
:
ruleList
)
{
RuleItemVo
itemVo
=
new
RuleItemVo
();
itemVo
.
setBusiness
(
ruleItem
.
getBusiness
());
itemVo
.
setAndOr
(
ruleItem
.
getAndOr
());
itemVo
.
setProperty
(
ruleItem
.
getPropertyName
());
itemVo
.
setRelation
(
ruleItem
.
getRelation
());
itemVo
.
setValue
(
ruleItem
.
getTargetVal
());
itemVo
.
setSort
(
ruleItem
.
getSort
());
itemVo
.
setName
(
ruleItem
.
getName
());
ruleItemVos
.
add
(
itemVo
);
}
AccountVo4ManageParam
param
=
new
AccountVo4ManageParam
();
List
<
RuleVo
>
ruleVos
=
new
ArrayList
<>();
RuleVo
ruleVo
=
new
RuleVo
();
ruleVo
.
setType
(
rule
.
getType
());
ruleVo
.
setAndOr
(
DroolsConstants
.
AND
);
ruleVo
.
setList
(
ruleItemVos
);
ruleVos
.
add
(
ruleVo
);
param
.
setRuleVos
(
ruleVos
);
param
.
setKeyword
(
keyword
);
param
.
setPageNo
(
pageNo
);
param
.
setPageSize
(
pageSize
);
param
.
setRequestContext
(
ContextHolder
.
get
());
AccountVo4ManageResponse
response
=
recommendClient
.
recommend4ManageAccount
(
param
);
if
(
response
==
null
)
{
return
Response
.
ok
();
}
log
.
info
(
"-------------------------------------------"
+
response
);
Map
<
String
,
Integer
>
pageMap
=
new
HashMap
<>();
pageMap
.
put
(
"pageNo"
,
response
.
getPageNo
());
pageMap
.
put
(
"pageSize"
,
response
.
getPageSize
());
pageMap
.
put
(
"pageTotal"
,
response
.
getTotal
());
List
<
AccountVo4Manage
>
vo4Manages
=
response
.
getList
();
return
Response
.
ok
(
vo4Manages
,
pageMap
);
}
return
Response
.
ok
();
}
// *********************************** ********************************************
}
\ No newline at end of file
cloud-drools-service/src/main/java/com/yizhi/drools/application/controller/manage/RecommendRuleItemController.java
0 → 100644
View file @
9a319eb7
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
{
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/controller/manage/RecommendStrategyController.java
0 → 100644
View file @
9a319eb7
package
com
.
yizhi
.
drools
.
application
.
controller
.
manage
;
import
cn.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.drools.application.constant.DroolsConstants
;
import
com.yizhi.drools.application.domain.RecommendStrategy
;
import
com.yizhi.drools.application.feign.RecommendClient
;
import
com.yizhi.drools.application.service.IRecommendRuleItemService
;
import
com.yizhi.drools.application.service.IRecommendRuleService
;
import
com.yizhi.drools.application.service.IRecommendStrategyRuleService
;
import
com.yizhi.drools.application.service.IRecommendStrategyService
;
import
com.yizhi.drools.application.util.ContextUtil
;
import
com.yizhi.drools.application.util.ResponseUtil
;
import
com.yizhi.drools.application.vo.drools.*
;
import
com.yizhi.drools.application.vo.manage.RuleContentRangeVo
;
import
com.yizhi.drools.application.vo.manage.RuleVo
;
import
com.yizhi.drools.application.vo.manage.StrategyPageVo
;
import
com.yizhi.drools.application.vo.manage.StrategyVo
;
import
com.yizhi.util.application.domain.Response
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.*
;
/**
* <p>
* 前端控制器
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
@Api
(
tags
=
"推荐策略 - 管理端接口"
)
@RestController
@RequestMapping
(
"/manage/recommendStrategy"
)
@Slf4j
public
class
RecommendStrategyController
{
@Autowired
private
IRecommendStrategyService
strategyService
;
@Autowired
private
IRecommendRuleService
ruleService
;
@Autowired
private
IRecommendRuleItemService
ruleItemService
;
@Autowired
private
IRecommendStrategyRuleService
strategyRuleService
;
@Autowired
private
RecommendClient
recommendClient
;
@PostMapping
(
"/save"
)
@ApiOperation
(
value
=
"内容规则保存模板, 然后返回内容规则的id"
)
public
Response
save
(
@ApiParam
@Validated
@RequestBody
StrategyVo
strategyVo
)
{
try
{
RecommendStrategy
strategy
=
new
RecommendStrategy
();
strategy
.
setName
(
strategyVo
.
getStrategyName
());
ContextUtil
.
buildTenantEntity4Select
(
strategy
);
EntityWrapper
ew
=
new
EntityWrapper
(
strategy
);
if
(
strategyVo
.
getId
()
!=
null
)
{
ew
.
ne
(
"id"
,
strategyVo
.
getId
());
}
int
count
=
strategyService
.
selectCount
(
ew
);
if
(
count
>
0
)
{
return
Response
.
fail
(
"4001"
,
"策略名称已经存在!"
);
}
boolean
flag
=
strategyService
.
save
(
strategyVo
);
if
(
flag
)
{
return
Response
.
ok
(
flag
);
}
return
Response
.
fail
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
Response
.
fail
(
"4001"
,
e
.
getLocalizedMessage
());
}
}
@GetMapping
(
"/page"
)
@ApiOperation
(
value
=
"策略列表分页"
,
response
=
StrategyPageVo
.
class
)
public
Response
<
StrategyPageVo
>
listPage
(
@ApiParam
(
"策略名称"
)
@RequestParam
(
required
=
false
)
String
name
,
@ApiParam
(
"开始时间"
)
@RequestParam
(
required
=
false
)
String
startTime
,
@ApiParam
(
"结束时间"
)
@RequestParam
(
required
=
false
)
String
endTime
,
@ApiParam
(
"是否是门户配置的列表"
)
@RequestParam
(
required
=
false
)
Boolean
isForPortal
,
@RequestParam
(
name
=
""
,
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
defaultValue
=
"10"
)
Integer
pageSize
)
{
Page
<
RecommendStrategy
>
page
=
new
Page
<>(
pageNo
,
pageSize
);
RecommendStrategy
strategy
=
new
RecommendStrategy
();
ContextUtil
.
buildTenantEntity4Select
(
strategy
);
EntityWrapper
<
RecommendStrategy
>
ew
=
new
EntityWrapper
<>(
strategy
);
if
(
StringUtils
.
isNotEmpty
(
name
))
{
ew
.
like
(
"name"
,
name
);
}
Date
startTimeDate
=
null
;
Date
endTimeDate
=
null
;
if
(
StringUtils
.
isNotEmpty
(
startTime
))
{
startTimeDate
=
DateUtil
.
beginOfDay
(
new
Date
(
Long
.
valueOf
(
startTime
)));
}
if
(
StringUtils
.
isNotEmpty
(
endTime
))
{
endTimeDate
=
DateUtil
.
endOfDay
(
new
Date
(
Long
.
valueOf
(
endTime
)));
}
//通过时间查询时 带上长期有效的结果
if
(
startTime
!=
null
&&
endTime
!=
null
)
{
ew
.
andNew
().
gt
(
"start_time"
,
startTimeDate
).
and
().
lt
(
"end_time"
,
endTimeDate
).
or
().
eq
(
"time_type"
,
1
);
}
else
{
if
(
startTime
!=
null
)
{
ew
.
gt
(
"start_time"
,
startTimeDate
).
or
().
eq
(
"time_type"
,
1
);
}
if
(
endTime
!=
null
)
{
ew
.
lt
(
"end_time"
,
endTimeDate
).
or
().
eq
(
"time_type"
,
1
);
}
}
ew
.
orderBy
(
"create_time"
,
false
);
ew
.
orderBy
(
"update_time"
,
false
);
page
=
strategyService
.
selectPage
(
page
,
ew
);
Date
date
=
new
Date
();
List
<
RecommendStrategy
>
strategies
=
page
.
getRecords
();
List
<
StrategyPageVo
>
list
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
strategies
))
{
strategies
.
forEach
(
item
->
{
StrategyPageVo
vo
=
new
StrategyPageVo
();
vo
.
setCreateTime
(
item
.
getCreateTime
());
vo
.
setEndTime
(
item
.
getEndTime
());
vo
.
setName
(
item
.
getName
());
vo
.
setStartTime
(
item
.
getStartTime
());
vo
.
setId
(
item
.
getId
());
list
.
add
(
vo
);
});
}
return
ResponseUtil
.
pageResponse4PageParam
(
page
,
list
);
}
@ApiOperation
(
"查看策略"
)
@GetMapping
(
"/view"
)
public
Response
view
(
@ApiParam
@RequestParam
(
name
=
"id"
)
Long
id
)
{
RecommendStrategy
strategy
=
strategyService
.
selectById
(
id
);
if
(
strategy
==
null
)
{
return
Response
.
fail
(
"4001"
,
"该id不存在"
);
}
// 组装 策略vo
StrategyVo
strategyVo
=
new
StrategyVo
();
strategyVo
.
setTimeType
(
strategy
.
getTimeType
());
strategyVo
.
setEndTime
(
strategy
.
getEndTime
());
strategyVo
.
setStartTime
(
strategy
.
getStartTime
());
strategyVo
.
setStrategyName
(
strategy
.
getName
());
strategyVo
.
setRuleVos
(
ruleService
.
listRuleVosByStrategyId
(
id
,
false
,
null
));
return
Response
.
ok
(
strategyVo
);
}
@PostMapping
(
"/copy"
)
@ApiOperation
(
value
=
"策略复制"
)
public
Response
copy
(
@ApiParam
(
"需要复制的策略id"
)
@RequestBody
HashMap
<
String
,
String
>
map
)
{
String
str
=
map
.
get
(
"id"
);
if
(
StringUtils
.
isEmpty
(
str
))
{
return
Response
.
fail
(
"4001"
,
"id不能为空"
);
}
Long
id
=
Long
.
valueOf
(
str
);
try
{
strategyService
.
copy
(
id
);
return
Response
.
ok
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
Response
.
fail
(
"4001"
,
e
.
getLocalizedMessage
());
}
}
@ApiOperation
(
"删除策略"
)
@PostMapping
(
"/delete"
)
public
Response
delete
(
@ApiParam
@RequestBody
HashMap
<
String
,
String
>
map
)
{
// TODO 先查看本策略有没有被使用
String
str
=
map
.
get
(
"id"
);
if
(
StringUtils
.
isEmpty
(
str
))
{
return
Response
.
fail
(
"4001"
,
"id不能为空"
);
}
Long
id
=
Long
.
valueOf
(
str
);
boolean
flag
=
strategyService
.
delete
(
id
);
return
Response
.
ok
();
}
@ApiOperation
(
value
=
"查看规则范围"
,
response
=
RuleContentRangeVo
.
class
)
@GetMapping
(
"/content/range/page"
)
public
Response
<
RuleContentRangeVo
>
contentRangePage
(
@ApiParam
(
"id"
)
@RequestParam
(
"id"
)
Long
id
,
@ApiParam
(
"关键字"
)
@RequestParam
(
name
=
"keyword"
,
required
=
false
)
String
keyword
,
@ApiParam
(
"内容类型"
)
@RequestParam
(
name
=
"business"
,
required
=
false
)
String
business
,
@RequestParam
(
defaultValue
=
"1"
,
required
=
false
)
Integer
pageNo
,
@RequestParam
(
defaultValue
=
"10"
,
required
=
false
)
Integer
pageSize
)
{
List
<
RuleVo
>
ruleList
=
ruleService
.
listRuleVosByStrategyId
(
id
,
true
,
business
);
if
(!
CollectionUtils
.
isEmpty
(
ruleList
))
{
BusinessVo4PortalParam
param
=
new
BusinessVo4PortalParam
();
param
.
setRuleVos
(
ruleList
);
if
(
StringUtils
.
isNotEmpty
(
keyword
))
{
param
.
setKeyword
(
keyword
);
}
if
(
StringUtils
.
isNotEmpty
(
business
))
{
param
.
setBusiness
(
business
);
}
param
.
setPageNo
(
pageNo
);
param
.
setPageSize
(
pageSize
);
param
.
setRequestContext
(
ContextHolder
.
get
());
BusinessVo4PortalResponse
response
=
recommendClient
.
recommend4Manage
(
param
);
log
.
info
(
"-------------------------------------------"
+
response
.
toString
());
Map
<
String
,
Integer
>
pageMap
=
new
HashMap
<>();
pageMap
.
put
(
"pageNo"
,
response
.
getPageNo
());
pageMap
.
put
(
"pageSize"
,
response
.
getPageSize
());
pageMap
.
put
(
"pageTotal"
,
response
.
getTotal
());
List
<
BusinessVo4Portal
>
vo4Portals
=
response
.
getList
();
if
(!
CollectionUtils
.
isEmpty
(
vo4Portals
))
{
List
<
RuleContentRangeVo
>
vos
=
new
ArrayList
<>(
vo4Portals
.
size
());
for
(
int
i
=
0
;
i
<
vo4Portals
.
size
();
i
++)
{
BusinessVo4Portal
p
=
vo4Portals
.
get
(
i
);
RuleContentRangeVo
vo
=
new
RuleContentRangeVo
();
vo
.
setNum
(
i
+
1
);
vo
.
setId
(
vo
.
getId
());
vo
.
setContent
(
p
.
getName
());
vo
.
setCode
(
p
.
getCode
());
vo
.
setBusiness
(
DroolsConstants
.
getBusinessCHN
(
p
.
getType
()));
vos
.
add
(
vo
);
}
return
Response
.
ok
(
vos
,
pageMap
);
}
}
return
Response
.
ok
();
}
@ApiOperation
(
"查看用户规则范围"
)
@GetMapping
(
"/getVisibleRangeToUser"
)
public
Response
getVisibleRange
(
@ApiParam
(
"策略id"
)
@RequestParam
(
"id"
)
Long
id
,
@ApiParam
(
"查询keyWord"
)
@RequestParam
(
value
=
"keyword"
,
required
=
false
)
String
keyword
,
@RequestParam
(
defaultValue
=
"1"
,
required
=
false
)
Integer
pageNo
,
@RequestParam
(
defaultValue
=
"10"
,
required
=
false
)
Integer
pageSize
)
{
RecommendStrategy
recommendStrategy
=
strategyService
.
selectById
(
id
);
if
(
recommendStrategy
==
null
)
{
return
Response
.
fail
(
"该策略不存在!"
);
}
List
<
RuleVo
>
ruleList
=
ruleService
.
listRuleVosByStrategyId
(
id
,
true
,
null
);
if
(!
CollectionUtils
.
isEmpty
(
ruleList
))
{
AccountVo4ManageParam
param
=
new
AccountVo4ManageParam
();
param
.
setRuleVos
(
ruleList
);
if
(
StringUtils
.
isNotEmpty
(
keyword
))
{
param
.
setKeyword
(
keyword
);
}
param
.
setPageNo
(
pageNo
);
param
.
setPageSize
(
pageSize
);
param
.
setRequestContext
(
ContextHolder
.
get
());
AccountVo4ManageResponse
response
=
recommendClient
.
recommend4ManageAccount
(
param
);
log
.
info
(
"-------------------------------------------"
+
response
.
toString
());
Map
<
String
,
Integer
>
pageMap
=
new
HashMap
<>();
pageMap
.
put
(
"pageNo"
,
response
.
getPageNo
());
pageMap
.
put
(
"pageSize"
,
response
.
getPageSize
());
pageMap
.
put
(
"pageTotal"
,
response
.
getTotal
());
List
<
AccountVo4Manage
>
vo4Manages
=
response
.
getList
();
return
Response
.
ok
(
vo4Manages
,
pageMap
);
}
return
Response
.
ok
();
}
// ********************************* remote api **********************************
/**
* 门户配置的策略回显
*
* @param strategyIds
* @return
*/
@PostMapping
(
"/list4PortalConfig"
)
public
Map
<
Long
,
StrategyPageVo
>
list4PortalConfig
(
@RequestBody
List
<
Long
>
strategyIds
)
{
if
(!
CollectionUtils
.
isEmpty
(
strategyIds
))
{
EntityWrapper
<
RecommendStrategy
>
recommendStrategyEntityWrapper
=
new
EntityWrapper
<>();
recommendStrategyEntityWrapper
.
in
(
"id"
,
strategyIds
);
List
<
RecommendStrategy
>
strategyList
=
strategyService
.
selectList
(
recommendStrategyEntityWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
strategyList
))
{
Map
<
Long
,
StrategyPageVo
>
map
=
new
HashMap
<>(
strategyList
.
size
());
strategyList
.
forEach
(
strategy
->
{
StrategyPageVo
vo
=
new
StrategyPageVo
();
vo
.
setId
(
strategy
.
getId
());
vo
.
setCreateTime
(
strategy
.
getCreateTime
());
vo
.
setEndTime
(
strategy
.
getEndTime
());
vo
.
setName
(
strategy
.
getName
());
vo
.
setStartTime
(
strategy
.
getStartTime
());
map
.
put
(
vo
.
getId
(),
vo
);
});
return
map
;
}
}
return
null
;
}
// ************************************ 尝试组装一个 *****************************************
/**
* 返回给管理端的推荐内容
*
* @param param
* @return
*/
@PostMapping
(
"/businessVo4Manage"
)
public
BusinessVo4PortalResponse
businessVo4Manage
(
@RequestBody
BusinessVo4PortalParam
param
)
{
List
<
Long
>
strategyIds
=
param
.
getStrategyIds
();
if
(!
CollectionUtils
.
isEmpty
(
strategyIds
))
{
//去除已经过期的策略id
deletePastDueStrategy
(
strategyIds
);
List
<
RuleVo
>
vos
=
new
ArrayList
<>();
for
(
Long
strategyId
:
strategyIds
)
{
vos
.
addAll
(
ruleService
.
listRuleVosByStrategyId
(
strategyId
,
true
,
null
));
}
param
.
setRuleVos
(
vos
);
param
.
setRequestContext
(
ContextHolder
.
get
());
BusinessVo4PortalResponse
businessVo4Portals
=
recommendClient
.
recommend4Manage
(
param
);
log
.
info
(
"--------------------- "
+
businessVo4Portals
);
return
businessVo4Portals
;
}
return
null
;
}
/**
* 返回给学员端的推荐内容
*
* @param param
* @return
*/
@PostMapping
(
"/businessVo4Portal"
)
public
BusinessVo4PortalResponse
businessVo4Portal
(
@RequestBody
BusinessVo4PortalParam
param
)
{
// 先查询这个用户在不在推荐范围内
List
<
Long
>
strategyIds
=
param
.
getStrategyIds
();
if
(!
CollectionUtils
.
isEmpty
(
strategyIds
))
{
//去除已经过期的策略id
deletePastDueStrategy
(
strategyIds
);
List
<
RuleVo
>
vos
=
new
ArrayList
<>();
for
(
Long
strategyId
:
strategyIds
)
{
param
.
getStrategyRuleVoMap
().
put
(
strategyId
,
ruleService
.
listRuleVosByStrategyId
(
strategyId
,
true
,
null
));
}
param
.
setRequestContext
(
ContextHolder
.
get
());
BusinessVo4PortalResponse
businessVo4Portals
=
recommendClient
.
recommend4Portal
(
param
);
log
.
info
(
"--------------------- "
+
businessVo4Portals
);
return
businessVo4Portals
;
}
return
null
;
}
private
void
deletePastDueStrategy
(
List
<
Long
>
strategyIds
)
{
Date
date
=
new
Date
();
EntityWrapper
<
RecommendStrategy
>
wrapper
=
new
EntityWrapper
<>();
wrapper
.
in
(
"id"
,
strategyIds
);
List
<
RecommendStrategy
>
recommendStrategies
=
strategyService
.
selectList
(
wrapper
);
if
(
recommendStrategies
.
isEmpty
()){
return
;
}
for
(
RecommendStrategy
r:
recommendStrategies
)
{
if
(
r
.
getTimeType
()==
2
&&
r
.
getEndTime
().
getTime
()<
date
.
getTime
()){
strategyIds
.
remove
(
r
.
getId
());
}
}
}
}
\ No newline at end of file
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendRule.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendRuleItem.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendRuleRuleItem.java
0 → 100644
View file @
9a319eb7
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;
// }
//
//}
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendStrategy.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/domain/RecommendStrategyRule.java
0 → 100644
View file @
9a319eb7
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
;
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/exception/GlobalExecptionHandler.java
0 → 100644
View file @
9a319eb7
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
());
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendRuleItemMapper.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendRuleMapper.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendRuleRuleItemMapper.java
0 → 100644
View file @
9a319eb7
//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> {
//
//}
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendStrategyMapper.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/mapper/RecommendStrategyRuleMapper.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/IRecommendRuleItemService.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/IRecommendRuleService.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/IRecommendStrategyRuleService.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/IRecommendStrategyService.java
0 → 100644
View file @
9a319eb7
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
);
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/impl/RecommendRuleItemServiceImpl.java
0 → 100644
View file @
9a319eb7
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
);
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/impl/RecommendRuleServiceImpl.java
0 → 100644
View file @
9a319eb7
package
com
.
yizhi
.
drools
.
application
.
service
.
impl
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.baomidou.mybatisplus.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.toolkit.StringUtils
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
com.yizhi.drools.application.constant.DroolsConstants
;
import
com.yizhi.drools.application.domain.RecommendRule
;
import
com.yizhi.drools.application.domain.RecommendRuleItem
;
import
com.yizhi.drools.application.domain.RecommendStrategyRule
;
import
com.yizhi.drools.application.mapper.RecommendRuleItemMapper
;
import
com.yizhi.drools.application.mapper.RecommendRuleMapper
;
import
com.yizhi.drools.application.service.IRecommendRuleItemService
;
import
com.yizhi.drools.application.service.IRecommendRuleService
;
import
com.yizhi.drools.application.service.IRecommendStrategyRuleService
;
import
com.yizhi.drools.application.util.ContextUtil
;
import
com.yizhi.drools.application.vo.manage.RuleItemVo
;
import
com.yizhi.drools.application.vo.manage.RuleVo
;
import
com.yizhi.system.application.system.remote.AccountClient
;
import
com.yizhi.system.application.vo.DroolsAccountVO
;
import
com.yizhi.system.application.vo.RuleVisibleRangeVo
;
import
com.yizhi.system.application.vo.SystemRuleItemVo
;
import
com.yizhi.util.application.page.PageInfo
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.yizhi.application.orm.id.IdGenerator
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <p>
* 服务实现类
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
RecommendRuleServiceImpl
extends
ServiceImpl
<
RecommendRuleMapper
,
RecommendRule
>
implements
IRecommendRuleService
{
@Autowired
private
IdGenerator
idGenerator
;
@Autowired
private
IRecommendRuleItemService
ruleItemService
;
@Autowired
private
RecommendRuleItemMapper
ruleItemMapper
;
@Autowired
private
IRecommendStrategyRuleService
strategyRuleService
;
@Autowired
private
AccountClient
accountClient
;
@Override
public
Long
insert
(
RuleVo
ruleVo
,
Integer
isTemplate
)
{
RecommendRule
rule
=
new
RecommendRule
();
rule
.
setName
(
ruleVo
.
getName
());
rule
.
setId
(
idGenerator
.
generate
());
rule
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
rule
.
setTemplate
(
isTemplate
);
rule
.
setType
(
ruleVo
.
getType
());
ContextUtil
.
buildTenantEntity4Insert
(
rule
);
if
(
rule
.
insert
())
{
ruleSaveThenDealRuleItem
(
ruleVo
,
rule
.
getId
());
}
return
rule
.
getId
();
}
@Override
public
Long
update
(
RuleVo
ruleVo
,
Integer
isTemplate
)
{
RecommendRule
rule
=
new
RecommendRule
();
rule
.
setId
(
ruleVo
.
getId
());
rule
.
setName
(
ruleVo
.
getName
());
rule
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
rule
.
setTemplate
(
isTemplate
);
rule
.
setType
(
ruleVo
.
getType
());
// 修改rule
int
num
=
this
.
baseMapper
.
updateById
(
rule
);
if
(
num
==
1
)
{
// 删除以前的 ruleItem
EntityWrapper
ew
=
new
EntityWrapper
();
ew
.
eq
(
"rule_id"
,
rule
.
getId
());
int
ruleItemDelNum
=
ruleItemMapper
.
delete
(
ew
);
ruleSaveThenDealRuleItem
(
ruleVo
,
rule
.
getId
());
}
return
rule
.
getId
();
}
@Override
public
Page
<
RecommendRule
>
selectPageByTypeAndName
(
Page
<
RecommendRule
>
page
,
Integer
type
,
String
name
)
{
RecommendRule
rule
=
new
RecommendRule
();
ContextUtil
.
buildTenantEntity4Select
(
rule
);
rule
.
setType
(
type
);
rule
.
setTemplate
(
DroolsConstants
.
TEMPLATE_YES
);
EntityWrapper
<
RecommendRule
>
ew
=
new
EntityWrapper
<>(
rule
);
if
(
StringUtils
.
isNotEmpty
(
name
))
{
ew
.
like
(
"name"
,
name
);
}
ew
.
orderBy
(
"create_time"
,
false
);
ew
.
orderBy
(
"update_time"
,
false
);
page
=
rule
.
selectPage
(
page
,
ew
);
return
page
;
}
@Override
public
List
<
RuleVo
>
listRuleVosByStrategyId
(
Long
strategyId
,
boolean
withClassName
,
String
business
)
{
List
<
RecommendStrategyRule
>
strategyRuleList
=
strategyRuleService
.
listByStrategyId
(
strategyId
);
List
<
RuleVo
>
ruleVos
=
new
ArrayList
<>();
if
(!
org
.
springframework
.
util
.
CollectionUtils
.
isEmpty
(
strategyRuleList
))
{
strategyRuleList
.
forEach
(
strategyRule
->
{
RecommendRule
rule
=
this
.
baseMapper
.
selectById
(
strategyRule
.
getRuleId
());
if
(
rule
!=
null
)
{
// 组装 ruleVo
RuleVo
ruleVo
=
new
RuleVo
();
ruleVo
.
setAndOr
(
strategyRule
.
getAndOr
());
ruleVo
.
setType
(
rule
.
getType
());
ruleVo
.
setTemplate
(
DroolsConstants
.
TEMPLATE_YES
.
equals
(
rule
.
getTemplate
()));
ruleVo
.
setName
(
rule
.
getName
());
ruleVo
.
setSort
(
strategyRule
.
getSort
());
if
(
rule
.
getTemplate
().
equals
(
DroolsConstants
.
RULE_TYPE_CONTENT
))
{
ruleVo
.
setQuoteRuleId
(
rule
.
getId
());
}
// 组装 ruleItemVo
List
<
RecommendRuleItem
>
ruleItemList
=
ruleItemService
.
listByRuleId
(
rule
.
getId
(),
business
);
if
(!
org
.
springframework
.
util
.
CollectionUtils
.
isEmpty
(
ruleItemList
))
{
List
<
RuleItemVo
>
list
=
new
ArrayList
<>(
ruleItemList
.
size
());
ruleItemList
.
forEach
(
ruleItem
->
{
RuleItemVo
vo
=
new
RuleItemVo
();
vo
.
setSort
(
ruleItem
.
getSort
());
vo
.
setAndOr
(
ruleItem
.
getAndOr
());
vo
.
setBusiness
(
ruleItem
.
getBusiness
());
vo
.
setProperty
(
ruleItem
.
getPropertyName
());
vo
.
setRelation
(
ruleItem
.
getRelation
());
vo
.
setValue
(
ruleItem
.
getTargetVal
());
vo
.
setName
(
ruleItem
.
getName
());
if
(
withClassName
)
{
vo
.
setBusinessClassName
(
ruleItem
.
getClassName
());
}
list
.
add
(
vo
);
});
ruleVo
.
setList
(
list
);
}
ruleVos
.
add
(
ruleVo
);
}
});
}
return
ruleVos
;
}
@Override
public
boolean
copy
(
Long
ruleId
)
{
String
currentTimeStr
=
"-复制-"
.
concat
(
String
.
valueOf
(
System
.
currentTimeMillis
()));
RecommendRule
ruleTarget
;
List
<
RecommendRule
>
ruleListTarget
=
new
ArrayList
<>();
List
<
RecommendRuleItem
>
ruleItemListTarget
=
new
ArrayList
<>();
RecommendRule
rule
=
this
.
baseMapper
.
selectById
(
ruleId
);
if
(
rule
!=
null
)
{
// 复制 rule
ruleTarget
=
copyRule
(
currentTimeStr
,
rule
);
ruleListTarget
.
add
(
ruleTarget
);
// 复制 rule_item
ruleItemListTarget
.
addAll
(
copyRuleItem
(
rule
.
getId
(),
ruleTarget
.
getId
()));
}
if
(!
CollectionUtils
.
isEmpty
(
ruleListTarget
))
{
this
.
insertBatch
(
ruleListTarget
);
}
if
(!
CollectionUtils
.
isEmpty
(
ruleItemListTarget
))
{
ruleItemService
.
insertBatch
(
ruleItemListTarget
);
}
return
true
;
}
/**
* 修改,新增 rule 时的 ruleItem保存
*
* @param ruleVo
* @param ruleId
* @return
*/
private
boolean
ruleSaveThenDealRuleItem
(
RuleVo
ruleVo
,
long
ruleId
)
{
List
<
RuleItemVo
>
list
=
ruleVo
.
getList
();
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
true
;
}
List
<
RecommendRuleItem
>
ruleItems
=
new
ArrayList
<>(
list
.
size
());
// 组装每一个ruleItem
for
(
RuleItemVo
templateSave
:
list
)
{
RecommendRuleItem
ruleItem
=
new
RecommendRuleItem
();
ruleItem
.
setRuleId
(
ruleId
);
ruleItem
.
setBusiness
(
templateSave
.
getBusiness
());
ruleItem
.
setRelation
(
templateSave
.
getRelation
());
ruleItem
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
ruleItem
.
setId
(
idGenerator
.
generate
());
ruleItem
.
setAndOr
(
templateSave
.
getSort
().
equals
(
1
)
?
DroolsConstants
.
AND
:
templateSave
.
getAndOr
());
ruleItem
.
setPropertyName
(
templateSave
.
getProperty
());
ruleItem
.
setSort
(
templateSave
.
getSort
());
ruleItem
.
setTargetVal
(
templateSave
.
getValue
());
ruleItem
.
setType
(
ruleVo
.
getType
());
ruleItem
.
setName
(
templateSave
.
getName
());
if
(
ruleItem
.
getType
().
equals
(
DroolsConstants
.
RULE_TYPE_CONTENT
))
{
ruleItem
.
setClassName
(
templateSave
.
getBusiness
());
}
else
{
ruleItem
.
setClassName
(
DroolsConstants
.
BUSINESS_CLASS_NAME_USER
);
ruleItem
.
setBusiness
(
"account"
);
}
ContextUtil
.
buildTenantEntity4Insert
(
ruleItem
);
ruleItems
.
add
(
ruleItem
);
}
if
(!
CollectionUtils
.
isEmpty
(
ruleItems
))
{
return
ruleItemService
.
insertBatch
(
ruleItems
);
}
return
false
;
}
private
RecommendRule
copyRule
(
String
currentTimeStr
,
RecommendRule
origin
)
{
RecommendRule
ruleTarget
=
new
RecommendRule
();
ruleTarget
.
setType
(
origin
.
getType
());
ruleTarget
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
ruleTarget
.
setId
(
idGenerator
.
generate
());
ruleTarget
.
setTemplate
(
origin
.
getTemplate
());
ruleTarget
.
setName
(
origin
.
getName
().
concat
(
currentTimeStr
));
ContextUtil
.
buildTenantEntity4Insert
(
ruleTarget
);
return
ruleTarget
;
}
private
List
<
RecommendRuleItem
>
copyRuleItem
(
Long
ruleId
,
Long
ruleIdTarget
)
{
RecommendRuleItem
ruleItem
=
new
RecommendRuleItem
();
ruleItem
.
setRuleId
(
ruleId
);
ContextUtil
.
buildTenantEntity4Select
(
ruleItem
);
List
<
RecommendRuleItem
>
ruleItemList
=
ruleItem
.
selectList
(
new
EntityWrapper
(
ruleItem
));
List
<
RecommendRuleItem
>
ruleItemListTarget
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
ruleItemList
))
{
RecommendRuleItem
ruleItemTarget
=
null
;
for
(
RecommendRuleItem
item
:
ruleItemList
)
{
ruleItemTarget
=
new
RecommendRuleItem
();
ruleItemTarget
.
setId
(
idGenerator
.
generate
());
ruleItemTarget
.
setName
(
item
.
getName
());
ruleItemTarget
.
setBusiness
(
item
.
getBusiness
());
ruleItemTarget
.
setRuleId
(
ruleIdTarget
);
ruleItemTarget
.
setAndOr
(
item
.
getAndOr
());
ruleItemTarget
.
setClassName
(
item
.
getClassName
());
ruleItemTarget
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
ruleItemTarget
.
setPropertyName
(
item
.
getPropertyName
());
ruleItemTarget
.
setRelation
(
item
.
getRelation
());
ruleItemTarget
.
setSort
(
item
.
getSort
());
ruleItemTarget
.
setTargetVal
(
item
.
getTargetVal
());
ruleItemTarget
.
setType
(
item
.
getType
());
ContextUtil
.
buildTenantEntity4Insert
(
ruleItemTarget
);
ruleItemListTarget
.
add
(
ruleItemTarget
);
}
}
return
ruleItemListTarget
;
}
@Override
public
Page
getVisibleRange
(
Long
id
,
String
keyword
,
Integer
pageNo
,
Integer
pageSize
)
{
RequestContext
context
=
ContextHolder
.
get
();
Page
page
=
new
Page
(
pageNo
,
pageSize
);
List
<
RecommendRuleItem
>
items
=
ruleItemService
.
listByRuleId
(
id
,
null
);
if
(
CollectionUtils
.
isNotEmpty
(
items
))
{
RuleVisibleRangeVo
rangeVo
=
new
RuleVisibleRangeVo
();
rangeVo
.
setKeyword
(
keyword
);
rangeVo
.
setPageNo
(
pageNo
);
rangeVo
.
setPageSize
(
pageSize
);
rangeVo
.
setCompanyId
(
context
.
getCompanyId
());
rangeVo
.
setSiteId
(
context
.
getSiteId
());
List
<
SystemRuleItemVo
>
ruleItemVos
=
new
ArrayList
<>(
items
.
size
());
items
.
forEach
(
a
->
{
//只获取用户规则的项
if
(
DroolsConstants
.
RULE_TYPE_USER
.
equals
(
a
.
getType
()))
{
SystemRuleItemVo
vo
=
new
SystemRuleItemVo
();
BeanUtils
.
copyProperties
(
a
,
vo
);
vo
.
setId
(
a
.
getId
());
ruleItemVos
.
add
(
vo
);
}
});
rangeVo
.
setRuleItemVos
(
ruleItemVos
);
PageInfo
<
DroolsAccountVO
>
pageByDrools
=
accountClient
.
getPageByRuleItems
(
rangeVo
);
page
.
setRecords
(
pageByDrools
.
getRecords
());
page
.
setTotal
(
pageByDrools
.
getPageRecords
());
}
return
page
;
}
// @Override
// public Map<String, QueryBuilder> builderQueryBuilder(Long id) {
// RecommendRuleItemVo ruleItem = new RecommendRuleItemVo();
// ContextUtil.buildTenantEntity4Select(ruleItem);
// EntityWrapper ew = new EntityWrapper(ruleItem);
// ew.eq("rule_id", id);
// ew.orderBy("sort");
//
// List<RecommendRuleItemVo> ruleItemList = this.baseMapper.selectList(ew);
// if (CollectionUtils.isNotEmpty(ruleItemList)) {
// QueryBuilder queryBuilder = QueryBuilders.boolQuery();
// ruleItemList.forEach(item -> {
// item.
//
//
// });
// }
//
//
//
//
// return null;
// }
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/impl/RecommendStrategyRuleServiceImpl.java
0 → 100644
View file @
9a319eb7
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
);
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/service/impl/RecommendStrategyServiceImpl.java
0 → 100644
View file @
9a319eb7
package
com
.
yizhi
.
drools
.
application
.
service
.
impl
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.baomidou.mybatisplus.service.impl.ServiceImpl
;
import
com.yizhi.application.orm.id.IdGenerator
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
com.yizhi.drools.application.constant.DroolsConstants
;
import
com.yizhi.drools.application.domain.RecommendRule
;
import
com.yizhi.drools.application.domain.RecommendRuleItem
;
import
com.yizhi.drools.application.domain.RecommendStrategy
;
import
com.yizhi.drools.application.domain.RecommendStrategyRule
;
import
com.yizhi.drools.application.mapper.RecommendRuleMapper
;
import
com.yizhi.drools.application.mapper.RecommendStrategyMapper
;
import
com.yizhi.drools.application.service.IRecommendRuleItemService
;
import
com.yizhi.drools.application.service.IRecommendRuleService
;
import
com.yizhi.drools.application.service.IRecommendStrategyRuleService
;
import
com.yizhi.drools.application.service.IRecommendStrategyService
;
import
com.yizhi.drools.application.util.ContextUtil
;
import
com.yizhi.drools.application.vo.manage.RuleVo
;
import
com.yizhi.drools.application.vo.manage.StrategyPageVo
;
import
com.yizhi.drools.application.vo.manage.StrategyVo
;
import
com.yizhi.system.application.system.remote.AccountClient
;
import
com.yizhi.system.application.vo.DroolsAccountVO
;
import
com.yizhi.system.application.vo.RuleVisibleRangeVo
;
import
com.yizhi.system.application.vo.SystemRuleItemVo
;
import
com.yizhi.util.application.page.PageInfo
;
import
org.apache.ibatis.session.RowBounds
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* <p>
* 服务实现类
* </p>
*
* @author shengchenglong123
* @since 2019-11-27
*/
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
RecommendStrategyServiceImpl
extends
ServiceImpl
<
RecommendStrategyMapper
,
RecommendStrategy
>
implements
IRecommendStrategyService
{
@Autowired
private
IdGenerator
idGenerator
;
@Autowired
private
IRecommendRuleService
ruleService
;
@Autowired
private
RecommendRuleMapper
ruleMapper
;
@Autowired
private
IRecommendStrategyRuleService
strategyRuleService
;
@Autowired
private
IRecommendRuleItemService
ruleItemService
;
@Autowired
private
RecommendStrategyMapper
strategyMapper
;
@Autowired
private
AccountClient
accountClient
;
@Override
public
boolean
save
(
StrategyVo
strategyVo
)
throws
Exception
{
RecommendStrategy
strategy
=
new
RecommendStrategy
();
ContextUtil
.
buildTenantEntity4Insert
(
strategy
);
strategy
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
strategy
.
setName
(
strategyVo
.
getStrategyName
());
strategy
.
setTimeType
(
strategyVo
.
getTimeType
());
// 自定义时间
if
(
strategy
.
getTimeType
().
equals
(
DroolsConstants
.
STRATEGY_TIME_CUSTOM
))
{
strategy
.
setStartTime
(
strategyVo
.
getStartTime
());
strategy
.
setEndTime
(
strategyVo
.
getEndTime
());
}
Long
oldId
=
strategyVo
.
getId
();
boolean
flag
;
// 修改
if
(
oldId
!=
null
)
{
strategy
.
setId
(
oldId
);
flag
=
strategyMapper
.
updateById
(
strategy
).
equals
(
1
);
if
(
flag
)
{
// 查出之前关联的 rule
List
<
Long
>
ruleIds
=
strategyRuleService
.
getRuleIds
(
oldId
);
if
(!
CollectionUtils
.
isEmpty
(
ruleIds
))
{
// 删除 strategy-rule 关联
EntityWrapper
ew
=
new
EntityWrapper
();
ew
.
eq
(
"strategy_id"
,
oldId
);
flag
=
flag
&&
strategyRuleService
.
delete
(
ew
);
// 删除 非模板的 rule
ew
=
new
EntityWrapper
();
ew
.
in
(
"id"
,
ruleIds
);
ew
.
eq
(
"template"
,
DroolsConstants
.
TEMPLATE_NO
);
flag
=
flag
&&
ruleService
.
delete
(
ew
);
// 删除 非模板的 ruleItem
ruleIds
=
ruleMapper
.
listTemplateYesOrNoRuleIds
(
ruleIds
,
DroolsConstants
.
TEMPLATE_NO
);
if
(!
CollectionUtils
.
isEmpty
(
ruleIds
))
{
ew
=
new
EntityWrapper
();
ew
.
in
(
"rule_id"
,
ruleIds
);
flag
=
flag
&&
ruleItemService
.
delete
(
ew
);
}
}
}
}
// 新增
else
{
strategy
.
setId
(
idGenerator
.
generate
());
flag
=
strategyMapper
.
insert
(
strategy
).
equals
(
1
);
}
// 插入 rule
if
(
flag
)
{
// 插入规则
List
<
RuleVo
>
ruleVos
=
strategyVo
.
getRuleVos
();
List
<
RecommendStrategyRule
>
strategyRules
=
new
ArrayList
<>();
Long
ruleId
;
RecommendStrategyRule
strategyRule
;
for
(
RuleVo
ruleVo
:
ruleVos
)
{
// 如果该规则是引用的
if
(
ruleVo
.
getQuoteRuleId
()
!=
null
)
{
ruleId
=
ruleVo
.
getQuoteRuleId
();
}
// 否则是新增的规则
else
{
ruleId
=
ruleService
.
insert
(
ruleVo
,
DroolsConstants
.
TEMPLATE_NO
);
if
(
ruleId
==
null
)
{
throw
new
Exception
(
"---------------- 插入规则时,失败 ----------------"
);
}
}
// 组装 策略与规则的关联关系
strategyRule
=
new
RecommendStrategyRule
();
ContextUtil
.
buildTenantEntity4Insert
(
strategyRule
);
strategyRule
.
setStrategyId
(
strategy
.
getId
());
strategyRule
.
setId
(
idGenerator
.
generate
());
strategyRule
.
setAndOr
(
ruleVo
.
getSort
().
equals
(
1
)
?
DroolsConstants
.
AND
:
ruleVo
.
getAndOr
());
strategyRule
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
strategyRule
.
setRuleId
(
ruleId
);
strategyRule
.
setSort
(
ruleVo
.
getSort
());
strategyRules
.
add
(
strategyRule
);
}
// 插入 策略与规则的关联关系
return
strategyRuleService
.
insertBatch
(
strategyRules
);
}
return
false
;
}
@Override
public
boolean
copy
(
Long
id
)
throws
Exception
{
RecommendStrategy
strategy
=
new
RecommendStrategy
();
strategy
.
setId
(
id
);
strategy
=
strategy
.
selectById
();
if
(
strategy
==
null
)
{
throw
new
Exception
(
"该id不存在"
);
}
// 1. 复制策略
String
currentTimeStr
=
"-复制-"
.
concat
(
String
.
valueOf
(
System
.
currentTimeMillis
()));
RecommendStrategy
strategyTarget
=
new
RecommendStrategy
();
// BeanUtils.copyProperties(strategyTarget, strategy);
BeanUtils
.
copyProperties
(
strategy
,
strategyTarget
);
strategyTarget
.
setId
(
idGenerator
.
generate
());
strategyTarget
.
setName
(
strategyTarget
.
getName
().
concat
(
currentTimeStr
));
strategyTarget
.
setCreateById
(
null
);
strategyTarget
.
setCreateTime
(
null
);
strategyTarget
.
setCreateByName
(
null
);
strategyTarget
.
setUpdateById
(
null
);
strategyTarget
.
setUpdateByName
(
null
);
strategyTarget
.
setUpdateTime
(
null
);
ContextUtil
.
buildTenantEntity4Insert
(
strategyTarget
);
// 2. 复制相关的 rule 和 ruleItem
RecommendStrategyRule
strategyRule
=
new
RecommendStrategyRule
();
strategyRule
.
setStrategyId
(
id
);
EntityWrapper
<
RecommendStrategyRule
>
ew
=
new
EntityWrapper
<>(
strategyRule
);
List
<
RecommendStrategyRule
>
strategyRuleList
=
strategyRule
.
selectList
(
ew
);
List
<
RecommendStrategyRule
>
strategyRuleListTarget
=
new
ArrayList
<>();
List
<
RecommendRule
>
ruleListTarget
=
new
ArrayList
<>();
List
<
RecommendRuleItem
>
ruleItemListTarget
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
strategyRuleList
))
{
RecommendRule
rule
;
RecommendRule
ruleTarget
;
for
(
RecommendStrategyRule
strategyRule4
:
strategyRuleList
)
{
rule
=
ruleService
.
selectById
(
strategyRule4
.
getRuleId
());
if
(
rule
!=
null
)
{
// 2.1 如果不是模板的话
if
(
rule
.
getTemplate
().
equals
(
DroolsConstants
.
TEMPLATE_NO
))
{
// 复制 rule
ruleTarget
=
copyRule
(
currentTimeStr
,
rule
);
ruleListTarget
.
add
(
ruleTarget
);
// 复制 rule_item
ruleItemListTarget
.
addAll
(
copyRuleItem
(
rule
.
getId
(),
ruleTarget
.
getId
()));
// 复制一条关联关系
strategyRuleListTarget
.
add
(
copyStrategyRule
(
strategyTarget
.
getId
(),
strategyRule4
,
ruleTarget
.
getId
()));
}
// 2.2 如果不是模板的话
else
{
strategyRuleListTarget
.
add
(
copyStrategyRule
(
strategyTarget
.
getId
(),
strategyRule4
,
rule
.
getId
()));
}
}
}
}
strategyTarget
.
insert
();
if
(!
CollectionUtils
.
isEmpty
(
ruleListTarget
))
{
ruleService
.
insertBatch
(
ruleListTarget
);
}
if
(!
CollectionUtils
.
isEmpty
(
strategyRuleListTarget
))
{
strategyRuleService
.
insertBatch
(
strategyRuleListTarget
);
}
if
(!
CollectionUtils
.
isEmpty
(
ruleItemListTarget
))
{
ruleItemService
.
insertBatch
(
ruleItemListTarget
);
}
return
true
;
}
@Override
public
boolean
delete
(
Long
id
)
{
int
num
=
this
.
baseMapper
.
deleteById
(
id
);
if
(
num
==
1
)
{
EntityWrapper
ew
=
new
EntityWrapper
();
ew
.
eq
(
"strategy_id"
,
id
);
boolean
flag
=
strategyRuleService
.
delete
(
ew
);
return
flag
;
}
return
true
;
}
@Override
public
Page
<
StrategyPageVo
>
pageByNameAndRuleId
(
String
name
,
Long
ruleId
,
Page
page
)
{
List
<
RecommendStrategy
>
list
=
this
.
baseMapper
.
listByNameAndRuleId
(
name
,
ruleId
,
new
RowBounds
(
page
.
getOffset
(),
page
.
getLimit
()));
page
.
setRecords
(
list
);
page
.
setTotal
(
this
.
baseMapper
.
countListByNameAndRuleId
(
name
,
ruleId
));
return
page
;
}
private
RecommendStrategyRule
copyStrategyRule
(
Long
strategyId
,
RecommendStrategyRule
origin
,
Long
ruleId
)
{
RecommendStrategyRule
sr
=
new
RecommendStrategyRule
();
sr
.
setStrategyId
(
strategyId
);
sr
.
setSort
(
origin
.
getSort
());
sr
.
setRuleId
(
ruleId
);
sr
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
sr
.
setAndOr
(
origin
.
getAndOr
());
sr
.
setId
(
idGenerator
.
generate
());
return
sr
;
}
private
RecommendRule
copyRule
(
String
currentTimeStr
,
RecommendRule
origin
)
{
RecommendRule
ruleTarget
=
new
RecommendRule
();
ruleTarget
.
setType
(
origin
.
getType
());
ruleTarget
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
ruleTarget
.
setId
(
idGenerator
.
generate
());
ruleTarget
.
setTemplate
(
origin
.
getTemplate
());
ruleTarget
.
setName
(
origin
.
getName
().
concat
(
currentTimeStr
));
ContextUtil
.
buildTenantEntity4Insert
(
ruleTarget
);
return
ruleTarget
;
}
private
List
<
RecommendRuleItem
>
copyRuleItem
(
Long
ruleId
,
Long
ruleIdTarget
)
{
RecommendRuleItem
ruleItem
=
new
RecommendRuleItem
();
ruleItem
.
setRuleId
(
ruleId
);
ContextUtil
.
buildTenantEntity4Select
(
ruleItem
);
List
<
RecommendRuleItem
>
ruleItemList
=
ruleItem
.
selectList
(
new
EntityWrapper
(
ruleItem
));
List
<
RecommendRuleItem
>
ruleItemListTarget
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
ruleItemList
))
{
for
(
RecommendRuleItem
item
:
ruleItemList
)
{
RecommendRuleItem
ruleItemTarget
=
new
RecommendRuleItem
();
ruleItemTarget
.
setId
(
idGenerator
.
generate
());
ruleItemTarget
.
setBusiness
(
item
.
getBusiness
());
ruleItemTarget
.
setName
(
item
.
getName
());
ruleItemTarget
.
setRuleId
(
ruleIdTarget
);
ruleItemTarget
.
setAndOr
(
item
.
getAndOr
());
ruleItemTarget
.
setClassName
(
item
.
getClassName
());
ruleItemTarget
.
setDeleted
(
DroolsConstants
.
DELETED_NO
);
ruleItemTarget
.
setPropertyName
(
item
.
getPropertyName
());
ruleItemTarget
.
setRelation
(
item
.
getRelation
());
ruleItemTarget
.
setSort
(
item
.
getSort
());
ruleItemTarget
.
setTargetVal
(
item
.
getTargetVal
());
ruleItemTarget
.
setType
(
item
.
getType
());
ContextUtil
.
buildTenantEntity4Insert
(
ruleItemTarget
);
ruleItemListTarget
.
add
(
ruleItemTarget
);
}
}
return
ruleItemListTarget
;
}
@Override
public
Page
getVisibleRange
(
Long
id
,
String
keyword
,
Integer
pageNo
,
Integer
pageSize
)
{
Page
page
=
new
Page
(
pageNo
,
pageSize
);
Map
<
Long
,
String
>
map
=
new
HashMap
();
List
<
Long
>
ruleIds
=
null
;
List
<
RecommendStrategyRule
>
recommendStrategyRules
=
this
.
strategyRuleService
.
listByStrategyId
(
id
);
if
(!
CollectionUtils
.
isEmpty
(
recommendStrategyRules
))
{
ruleIds
=
new
ArrayList
<>(
recommendStrategyRules
.
size
());
for
(
RecommendStrategyRule
a
:
recommendStrategyRules
)
{
if
(!
map
.
containsKey
(
a
.
getRuleId
()))
{
map
.
put
(
a
.
getRuleId
(),
a
.
getAndOr
());
}
ruleIds
.
add
(
a
.
getRuleId
());
}
}
if
(!
CollectionUtils
.
isEmpty
(
ruleIds
))
{
RequestContext
context
=
ContextHolder
.
get
();
RuleVisibleRangeVo
rangeVo
=
new
RuleVisibleRangeVo
();
rangeVo
.
setKeyword
(
keyword
);
rangeVo
.
setPageNo
(
pageNo
);
rangeVo
.
setPageSize
(
pageSize
);
rangeVo
.
setCompanyId
(
context
.
getCompanyId
());
rangeVo
.
setSiteId
(
context
.
getSiteId
());
rangeVo
.
setIsStrategy
(
true
);
List
<
SystemRuleItemVo
>
ruleItemVos
=
new
ArrayList
<>();
for
(
Long
ruleId
:
ruleIds
)
{
List
<
RecommendRuleItem
>
items
=
ruleItemService
.
listByRuleId
(
ruleId
,
null
);
if
(!
CollectionUtils
.
isEmpty
(
items
))
{
items
.
forEach
(
a
->
{
//只获取用户规则的项
if
(
a
.
getType
()
==
2
)
{
SystemRuleItemVo
vo
=
new
SystemRuleItemVo
();
BeanUtils
.
copyProperties
(
a
,
vo
);
vo
.
setId
(
a
.
getId
());
vo
.
setRulesAndOr
(
map
.
get
(
a
.
getRuleId
()));
ruleItemVos
.
add
(
vo
);
}
});
}
}
rangeVo
.
setRuleItemVos
(
ruleItemVos
);
PageInfo
<
DroolsAccountVO
>
pageByDrools
=
accountClient
.
getPageByRuleItems
(
rangeVo
);
page
.
setRecords
(
pageByDrools
.
getRecords
());
page
.
setTotal
(
pageByDrools
.
getPageRecords
());
}
return
page
;
}
}
\ No newline at end of file
cloud-drools-service/src/main/java/com/yizhi/drools/application/util/ContextUtil.java
0 → 100644
View file @
9a319eb7
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
();
}
}
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/util/QueryBuilderUtil.java
0 → 100644
View file @
9a319eb7
package
com
.
yizhi
.
drools
.
application
.
util
;
/**
* @ClassName QueryBuilderUtil
* @Description TODO
* @Author shengchenglong
* @DATE 2019-12-30 10:39
* @Version 1.0
*/
public
class
QueryBuilderUtil
{
}
cloud-drools-service/src/main/java/com/yizhi/drools/application/util/ResponseUtil.java
0 → 100644
View file @
9a319eb7
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
);
}
}
cloud-drools-service/src/main/resources/META-INF/kmodule.xml
0 → 100644
View file @
9a319eb7
<?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
cloud-drools-service/src/main/resources/bootstrap.properties
0 → 100644
View file @
9a319eb7
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
cloud-drools-service/src/main/resources/rule.json
0 → 100644
View file @
9a319eb7
{
"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
cloud-drools-service/src/main/resources/rules/recommend/recommend.drl
0 → 100644
View file @
9a319eb7
package
rules
.
recommend
import
com
.
fulan
.
application
.
domain
.
RecommendRule
rule
"course"
when
then
end
cloud-drools-service/src/test/java/com/fulan/application/CloudDroolsApplicationTest.java
0 → 100644
View file @
9a319eb7
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
);
}
}
cloud-drools-service/src/test/java/com/fulan/application/SingleTest.java
0 → 100644
View file @
9a319eb7
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
);
}
}
pom.xml
0 → 100644
View file @
9a319eb7
<?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>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment