Browse Source

积分规则相关接口

dev
jianjun 5 years ago
parent
commit
05cac1ea4f
  1. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
  2. 42
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CommonOperateTypeEnum.java
  3. 126
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/PointRuleDTO.java
  4. 21
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/PointDetailFormDTO.java
  5. 71
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/PointRuleFormDTO.java
  6. 23
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/PointRuleListFormDTO.java
  7. 18
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/CustomerFunctionResultDTO.java
  8. 24
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/PointDetailResultDTO.java
  9. 23
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/PointRuleResultDTO.java
  10. 12
      epmet-module/epmet-point/epmet-point-server/pom.xml
  11. 42
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/common/enu/PointUnitEnum.java
  12. 43
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/common/enu/SysResponseEnum.java
  13. 40
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java
  14. 100
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java
  15. 23
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/PointRuleDao.java
  16. 4
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/RuleOperateLogDao.java
  17. 32
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java
  18. 14
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/RuleOperateLogEntity.java
  19. 76
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/PointRuleService.java
  20. 4
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/SysOperateLogService.java
  21. 199
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java
  22. 22
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/SysOperateLogServiceImpl.java
  23. 52
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/epmet_point.sql
  24. 19
      epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml
  25. 4
      epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/RuleOperateLogDao.xml
  26. 10
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java
  27. 18
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java
  28. 6
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFunctionController.java
  29. 2
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFunctionService.java
  30. 41
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFunctionServiceImpl.java

5
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java

@ -48,4 +48,9 @@ public interface StrConstant {
* 中文顿号 * 中文顿号
*/ */
String COMMA_ZH = "、"; String COMMA_ZH = "、";
/**
* 反斜杠
*/
String SEPARATOR = "/";
} }

42
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CommonOperateTypeEnum.java

@ -0,0 +1,42 @@
package com.epmet.commons.tools.enums;
/**
* 通用操作类型 枚举类
* dev|test|prod
*
* @author jianjun liu
* @date 2020-07-03 11:14
**/
public enum CommonOperateTypeEnum {
ADD("add", "添加"),
EDIT("edit", "编辑"),
DEL("del", "删除"),
;
private String code;
private String desc;
CommonOperateTypeEnum(String code, String name) {
this.code = code;
this.desc = name;
}
public static CommonOperateTypeEnum getEnum(String code) {
CommonOperateTypeEnum[] values = CommonOperateTypeEnum.values();
for (CommonOperateTypeEnum value : values) {
if (code != null && value.getCode().equals(code)) {
return value;
}
}
return null;
}
public String getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

126
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/PointRuleDTO.java

@ -1,126 +0,0 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 积分规则表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-20
*/
@Data
public class PointRuleDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 规则名称 与事件名称保持一致即可
*/
private String ruleName;
/**
* 规则说明 事件说明
*/
private String ruleDesc;
/**
* 事件CODE 来自事件表
*/
private String eventCode;
/**
* 事件名称 来自事件表
*/
private String eventName;
/**
* 操作类型 加积分:add;减积分:subtract
*/
private String operateType;
/**
* 积分上限
*/
private Integer upLimit;
/**
* 积分上限描述
*/
private String upLimitDesc;
/**
* 获得积分值
*/
private Integer pointNum;
/**
* 获得积分单位 time分钟minute小时hour
*/
private String pointUnit;
/**
* 是否启用 0-1-
*/
private String enabledFlag;
/**
* 删除标识 0-1-
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

21
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/PointDetailFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* desc:积分规则Id详情获取 规则列表
* @author jianjun liu
* @date 2020-07-22 15:28
**/
@Data
public class PointDetailFormDTO implements Serializable {
private static final long serialVersionUID = 7587939716742608164L;
/**
* 积分规则Id
*/
@NotBlank(message = "积分规则Id不能为空")
private String ruleId;
}

71
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/PointRuleFormDTO.java

@ -0,0 +1,71 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* desc:积分规则保存/修改 规则列表
*
* @author jianjun liu
* @date 2020-07-22 15:28
**/
@Data
public class PointRuleFormDTO implements Serializable {
private static final long serialVersionUID = -3228252683629912008L;
/**
* 积分规则Id
*/
@NotBlank(message = "积分规则Id不能为空", groups = UpdateGroup.class)
private String ruleId;
/**
* 积分
*/
@NotBlank(message = "积分不能为空", groups = {AddGroup.class, UpdateGroup.class})
private String point;
/**
* 是否开启
*/
@NotBlank(message = "是否开启不能为空", groups = {AddGroup.class, UpdateGroup.class})
private String enabledFlag;
/**
* 上限开启
*/
@NotBlank(message = "积分上限不能为空", groups = {AddGroup.class, UpdateGroup.class})
private String upLimit;
/**
* 积分规则Id
*/
@NotBlank(message = "客户Id不能为空", groups = {AddGroup.class, UpdateGroup.class})
private String customerId;
//=======系统添加时的属性======
/**
* 规则说明 事件说明
*/
@NotBlank(message = "规则描述不能为空", groups = AddGroup.class)
private String ruleDesc;
/**
* 事件CODE 来自事件表
*/
@NotBlank(message = "事件code不能为空", groups = AddGroup.class)
private String eventCode;
/**
* 操作类型 加积分:add;减积分:subtract
*/
@NotBlank(message = "操作类型不能为空", groups = AddGroup.class)
private String operateType;
/**
* 获得积分单位 time分钟minute小时hour
*/
@NotBlank(message = "积分单位不能为空", groups = AddGroup.class)
private String pointUnit;
}

23
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/PointRuleListFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* desc:根据功能Id获取 规则列表
* @author jianjun liu
* @date 2020-07-22 15:28
**/
@Data
public class PointRuleListFormDTO implements Serializable {
private static final long serialVersionUID = -1918653281170340608L;
/**
* 功能Id
*/
@NotBlank(message = "功能Id不能为空")
private String functionId;
@NotBlank(message = "客户Id不能为空")
private String customerId;
}

18
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/CustomerFunctionResultDTO.java

@ -0,0 +1,18 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* desc:积分规则-获取客户功能列表 result
* @author jianjun liu
* @date 2020-07-22 14:43
**/
@Data
public class CustomerFunctionResultDTO implements Serializable {
private static final long serialVersionUID = -3761765064811136295L;
private String functionId;
private String functionName;
}

24
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/PointDetailResultDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* desc:积分规则-详情 result
* @author jianjun liu
* @date 2020-07-22 14:43
**/
@Data
public class PointDetailResultDTO implements Serializable {
private static final long serialVersionUID = 2426172750860788081L;
private String ruleId;
private String ruleName;
private String ruleDesc;
private Integer point;
private String pointUnit;
private String upLimit;
private String enabledFlag;
private String upLimitDesc;
}

23
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/PointRuleResultDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* desc:积分规则-列表 result
* @author jianjun liu
* @date 2020-07-22 14:43
**/
@Data
public class PointRuleResultDTO implements Serializable {
private static final long serialVersionUID = -2327977101138032573L;
private String ruleId;
private String ruleName;
private String ruleDesc;
/**
* 拼接好的 积分值/单位
*/
private String pointValue;
}

12
epmet-module/epmet-point/epmet-point-server/pom.xml

@ -69,6 +69,18 @@
<version>2.0.0</version> <version>2.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>oper-customize-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-user-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

42
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/common/enu/PointUnitEnum.java

@ -0,0 +1,42 @@
package com.epmet.common.enu;
/**
* 系积分系统-积分单位枚举类
* dev|test|prod
*
* @author jianjun liu
* @date 2020-07-03 11:14
**/
public enum PointUnitEnum {
TIME("time", "次"),
MINUTE("minute", "分种"),
HOUR("hour", "小时"),
;
private String code;
private String name;
PointUnitEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static PointUnitEnum getEnum(String code) {
PointUnitEnum[] values = PointUnitEnum.values();
for (PointUnitEnum value : values) {
if (code != null && value.getCode().equals(code)) {
return value;
}
}
return null;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}

43
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/common/enu/SysResponseEnum.java

@ -0,0 +1,43 @@
package com.epmet.common.enu;
/**
* @author jianjun liu
* @date 2020-06-04 21:39
**/
public enum SysResponseEnum {
/**
*
* 业务代码枚举类
*
* 编码样式CCCBBOOXX
* 编码示例说明
* CCC 中心编码&业务系统 (112与端口号一致-积分系统服务)
* BB 业务类型00-默认
* OO 操作类型00-默认
* XX 具体编码00-成功,01-失败,02-参数错误,10-异常 99-系统错误
*
*/
/*通用枚举 */
EXCEPTION(10001,"系统异常"),
/*积分规则 业务 01*/
THIRD_SERVICE_ERROR(112010001,"调用第三方接口异常"),
POINT_RULE_IS_NOT_EXIST(112010002,"积分规则不存在"),
;
private Integer code;
private String msg;
SysResponseEnum(Integer code, String msg){
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
}

40
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/BackDoorController.java

@ -0,0 +1,40 @@
package com.epmet.controller;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.dto.form.PointRuleFormDTO;
import com.epmet.service.PointRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author jianjun liu
* @date 2020-06-04 20:39
**/
@RestController
@RequestMapping("opback")
public class BackDoorController {
@Autowired
private PointRuleService pointRuleService;
/**
* desc:添加规则
*
* @param formDTO
* @return
*/
@PostMapping(value = "sysadd")
public Result<Boolean> add(@RequestBody PointRuleFormDTO formDTO) {
TokenDto tokenDTO = new TokenDto();
tokenDTO.setUserId("default");
formDTO.setCustomerId(tokenDTO.getCustomerId());
ValidatorUtils.validateEntity(formDTO, AddGroup.class);
pointRuleService.add(tokenDTO, formDTO);
return new Result<Boolean>().ok(true);
}
}

100
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java

@ -0,0 +1,100 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.form.PointDetailFormDTO;
import com.epmet.dto.form.PointRuleFormDTO;
import com.epmet.dto.form.PointRuleListFormDTO;
import com.epmet.dto.result.CustomerFunctionResultDTO;
import com.epmet.dto.result.PointDetailResultDTO;
import com.epmet.dto.result.PointRuleResultDTO;
import com.epmet.service.PointRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 积分规则controller
*
* @author jianjun liu
* @date 2020-07-22 14:39
**/
@RestController
@RequestMapping("rule")
public class PointRuleController {
@Autowired
private PointRuleService pointRuleService;
/**
* desc:积分规则-获取客户有积分规则的功能列表
*
* @param tokenDTO
* @return
*/
@PostMapping(value = "functionlist")
public Result<List<CustomerFunctionResultDTO>> getFunctionList(@LoginUser TokenDto tokenDTO) {
return new Result<List<CustomerFunctionResultDTO>>().ok(pointRuleService.getFunctionList(tokenDTO.getCustomerId()));
}
/**
* desc:根据功能id获取积分规则
*
* @param tokenDTO
* @param formDTO
* @return
*/
@PostMapping(value = "list")
public Result<List<PointRuleResultDTO>> list(@LoginUser TokenDto tokenDTO, @RequestBody PointRuleListFormDTO formDTO) {
formDTO.setCustomerId(tokenDTO.getCustomerId());
ValidatorUtils.validateEntity(formDTO);
return new Result<List<PointRuleResultDTO>>().ok(pointRuleService.list(formDTO));
}
/**
* desc:根据规则id获取积分规则
*
* @param formDTO
* @return
*/
@PostMapping(value = "detail")
public Result<PointDetailResultDTO> detail(@RequestBody PointDetailFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<PointDetailResultDTO>().ok(pointRuleService.detail(formDTO));
}
/**
* desc:根据功能id获取积分规则
*
* @param formDTO
* @return
*/
@PostMapping(value = "update")
public Result<Boolean> update(@LoginUser TokenDto tokenDTO, @RequestBody PointRuleFormDTO formDTO) {
formDTO.setCustomerId(tokenDTO.getCustomerId());
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class);
pointRuleService.update(tokenDTO,formDTO);
return new Result<Boolean>().ok(true);
}
/**
* desc:添加规则
*
* @param formDTO
* @return
*/
@PostMapping(value = "add")
public Result<Boolean> add(@LoginUser TokenDto tokenDTO, @RequestBody PointRuleFormDTO formDTO) {
formDTO.setCustomerId(tokenDTO.getCustomerId());
ValidatorUtils.validateEntity(formDTO, AddGroup.class);
pointRuleService.add(tokenDTO,formDTO);
return new Result<Boolean>().ok(true);
}
}

23
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/PointRuleDao.java

@ -18,8 +18,12 @@
package com.epmet.dao; package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.PointRuleListFormDTO;
import com.epmet.entity.PointRuleEntity; import com.epmet.entity.PointRuleEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 积分规则表 * 积分规则表
@ -29,5 +33,22 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface PointRuleDao extends BaseDao<PointRuleEntity> { public interface PointRuleDao extends BaseDao<PointRuleEntity> {
/**
* desc:获取该客户下有规则的功能Id
*
* @param customerId
* @return
*/
List<String> selectFunctionIds(@Param("customerId") String customerId);
/**
* desc:获取该客户下有规则的功能Id
*
* @param formDTO
* @return
*/
List<PointRuleEntity> selectListByFunctionId(PointRuleListFormDTO formDTO);
int updateByCustomerId(PointRuleEntity entity);
} }

4
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/SysOperateLogDao.java → epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/RuleOperateLogDao.java

@ -18,7 +18,7 @@
package com.epmet.dao; package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.SysOperateLogEntity; import com.epmet.entity.RuleOperateLogEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -28,6 +28,6 @@ import org.apache.ibatis.annotations.Mapper;
* @since v1.0.0 2020-07-20 * @since v1.0.0 2020-07-20
*/ */
@Mapper @Mapper
public interface SysOperateLogDao extends BaseDao<SysOperateLogEntity> { public interface RuleOperateLogDao extends BaseDao<RuleOperateLogEntity> {
} }

32
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java

@ -18,12 +18,11 @@
package com.epmet.entity; package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date; import java.util.Objects;
/** /**
* 积分规则表 * 积分规则表
@ -58,11 +57,6 @@ public class PointRuleEntity extends BaseEpmetEntity {
*/ */
private String eventCode; private String eventCode;
/**
* 事件名称 来自事件表
*/
private String eventName;
/** /**
* 操作类型 加积分:add;减积分:subtract * 操作类型 加积分:add;减积分:subtract
*/ */
@ -81,7 +75,7 @@ public class PointRuleEntity extends BaseEpmetEntity {
/** /**
* 获得积分值 * 获得积分值
*/ */
private Integer pointNum; private Integer point;
/** /**
* 获得积分单位 time分钟minute小时hour * 获得积分单位 time分钟minute小时hour
@ -93,4 +87,26 @@ public class PointRuleEntity extends BaseEpmetEntity {
*/ */
private String enabledFlag; private String enabledFlag;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
PointRuleEntity entity = (PointRuleEntity) o;
return customerId.equals(entity.customerId) &&
ruleName.equals(entity.ruleName) &&
ruleDesc.equals(entity.ruleDesc) &&
eventCode.equals(entity.eventCode) &&
operateType.equals(entity.operateType) &&
upLimit.equals(entity.upLimit) &&
upLimitDesc.equals(entity.upLimitDesc) &&
point.equals(entity.point) &&
pointUnit.equals(entity.pointUnit) &&
enabledFlag.equals(entity.enabledFlag);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), customerId, ruleName, ruleDesc, eventCode, operateType, upLimit, upLimitDesc, point, pointUnit, enabledFlag);
}
} }

14
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/SysOperateLogEntity.java → epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/RuleOperateLogEntity.java

@ -18,13 +18,10 @@
package com.epmet.entity; package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
/** /**
* 积分系统操作记录表 * 积分系统操作记录表
* *
@ -34,7 +31,7 @@ import java.util.Date;
@Data @Data
@EqualsAndHashCode(callSuper=false) @EqualsAndHashCode(callSuper=false)
@TableName("sys_operate_log") @TableName("sys_operate_log")
public class SysOperateLogEntity extends BaseEpmetEntity { public class RuleOperateLogEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -44,14 +41,9 @@ public class SysOperateLogEntity extends BaseEpmetEntity {
private String customerId; private String customerId;
/** /**
* 操作对象ID * 规则ID
*/
private String objectId;
/**
* 对象类型 规则:rule
*/ */
private String objectType; private String ruleId;
/** /**
* 操作类型 新建:add,编辑:edit删除:del * 操作类型 新建:add,编辑:edit删除:del

76
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/PointRuleService.java

@ -18,12 +18,16 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.PointRuleDTO; import com.epmet.dto.form.PointDetailFormDTO;
import com.epmet.dto.form.PointRuleFormDTO;
import com.epmet.dto.form.PointRuleListFormDTO;
import com.epmet.dto.result.CustomerFunctionResultDTO;
import com.epmet.dto.result.PointDetailResultDTO;
import com.epmet.dto.result.PointRuleResultDTO;
import com.epmet.entity.PointRuleEntity; import com.epmet.entity.PointRuleEntity;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 积分规则表 * 积分规则表
@ -34,62 +38,22 @@ import java.util.Map;
public interface PointRuleService extends BaseService<PointRuleEntity> { public interface PointRuleService extends BaseService<PointRuleEntity> {
/** /**
* 默认分页 * desc:根据用户id获取积分规则-功能列表
* * @param customerId
* @param params * @return
* @return PageData<PointRuleDTO>
* @author generator
* @date 2020-07-20
*/ */
PageData<PointRuleDTO> page(Map<String, Object> params); List<CustomerFunctionResultDTO> getFunctionList(String customerId);
/** /**
* 默认查询 * desc根据客户Id 及功能Id获取规则列表
* * @param formDTO
* @param params * @return
* @return java.util.List<PointRuleDTO> */
* @author generator List<PointRuleResultDTO> list(PointRuleListFormDTO formDTO);
* @date 2020-07-20
*/
List<PointRuleDTO> list(Map<String, Object> params);
/** PointDetailResultDTO detail(PointDetailFormDTO formDTO);
* 单条查询
*
* @param id
* @return PointRuleDTO
* @author generator
* @date 2020-07-20
*/
PointRuleDTO get(String id);
/** void update(TokenDto tokenDTO, PointRuleFormDTO formDTO);
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-07-20
*/
void save(PointRuleDTO dto);
/** void add(TokenDto tokenDTO, PointRuleFormDTO formDTO);
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-07-20
*/
void update(PointRuleDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-07-20
*/
void delete(String[] ids);
} }

4
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/SysOperateLogService.java

@ -20,7 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.SysOperateLogDTO; import com.epmet.dto.SysOperateLogDTO;
import com.epmet.entity.SysOperateLogEntity; import com.epmet.entity.RuleOperateLogEntity;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -31,7 +31,7 @@ import java.util.Map;
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-20 * @since v1.0.0 2020-07-20
*/ */
public interface SysOperateLogService extends BaseService<SysOperateLogEntity> { public interface SysOperateLogService extends BaseService<RuleOperateLogEntity> {
/** /**
* 默认分页 * 默认分页

199
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java

@ -17,23 +17,40 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.common.enu.PointUnitEnum;
import com.epmet.common.enu.SysResponseEnum;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.enums.CommonOperateTypeEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.PointRuleDao; import com.epmet.dao.PointRuleDao;
import com.epmet.dto.PointRuleDTO; import com.epmet.dao.RuleOperateLogDao;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.form.CustomerFunctionListFormDTO;
import com.epmet.dto.form.PointDetailFormDTO;
import com.epmet.dto.form.PointRuleFormDTO;
import com.epmet.dto.form.PointRuleListFormDTO;
import com.epmet.dto.result.CustomerFunctionResultDTO;
import com.epmet.dto.result.DefaultFunctionListResultDTO;
import com.epmet.dto.result.PointDetailResultDTO;
import com.epmet.dto.result.PointRuleResultDTO;
import com.epmet.entity.PointRuleEntity; import com.epmet.entity.PointRuleEntity;
import com.epmet.entity.RuleOperateLogEntity;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.service.PointRuleService; import com.epmet.service.PointRuleService;
import org.apache.commons.lang3.StringUtils; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils;
import java.util.Arrays; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.stream.Collectors;
/** /**
* 积分规则表 * 积分规则表
@ -41,60 +58,116 @@ import java.util.Map;
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-20 * @since v1.0.0 2020-07-20
*/ */
@Slf4j
@Service @Service
public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRuleEntity> implements PointRuleService { public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRuleEntity> implements PointRuleService {
@Autowired
private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient;
@Override @Autowired
public PageData<PointRuleDTO> page(Map<String, Object> params) { private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
IPage<PointRuleEntity> page = baseDao.selectPage( @Autowired
getPage(params, FieldConstant.CREATED_TIME, false), private RuleOperateLogDao ruleOperateLogDao;
getWrapper(params)
); @Override
return getPageData(page, PointRuleDTO.class); public List<CustomerFunctionResultDTO> getFunctionList(String customerId) {
} List<CustomerFunctionResultDTO> result = new ArrayList<>();
CustomerFunctionListFormDTO formDTO = new CustomerFunctionListFormDTO();
@Override formDTO.setCustomerId(customerId);
public List<PointRuleDTO> list(Map<String, Object> params) { Result<List<DefaultFunctionListResultDTO>> openedFunctionResult = operCustomizeOpenFeignClient.getOpenedFunctionList(formDTO);
List<PointRuleEntity> entityList = baseDao.selectList(getWrapper(params)); if (!openedFunctionResult.success()) {
log.warn("getFunctionList getOpenedFunctionList fail,result:{}", JSON.toJSONString(openedFunctionResult));
return ConvertUtils.sourceToTarget(entityList, PointRuleDTO.class); throw new RenException(SysResponseEnum.THIRD_SERVICE_ERROR.getCode(), SysResponseEnum.THIRD_SERVICE_ERROR.getMsg());
} }
List<DefaultFunctionListResultDTO> resultData = openedFunctionResult.getData();
private QueryWrapper<PointRuleEntity> getWrapper(Map<String, Object> params){ if (CollectionUtils.isEmpty(resultData)) {
String id = (String)params.get(FieldConstant.ID_HUMP); log.warn("getFunctionList customerId:{} have opened any function", customerId);
return result;
QueryWrapper<PointRuleEntity> wrapper = new QueryWrapper<>(); }
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); List<String> functionIds = baseDao.selectFunctionIds(customerId);
if (CollectionUtils.isEmpty(functionIds)) {
return wrapper; log.warn("getFunctionList customerId:{} have any pointRules", customerId);
} return result;
}
@Override return resultData.stream().filter(function -> functionIds.contains(function.getFunctionId()))
public PointRuleDTO get(String id) { .map(fun -> ConvertUtils.sourceToTarget(fun, CustomerFunctionResultDTO.class))
PointRuleEntity entity = baseDao.selectById(id); .collect(Collectors.toList());
return ConvertUtils.sourceToTarget(entity, PointRuleDTO.class); }
}
@Override
@Override public List<PointRuleResultDTO> list(PointRuleListFormDTO formDTO) {
@Transactional(rollbackFor = Exception.class) List<PointRuleResultDTO> result = new ArrayList<>();
public void save(PointRuleDTO dto) { List<PointRuleEntity> list = baseDao.selectListByFunctionId(formDTO);
PointRuleEntity entity = ConvertUtils.sourceToTarget(dto, PointRuleEntity.class); if (CollectionUtils.isEmpty(list)) {
insert(entity); log.warn("list functionId:{} return empty", formDTO.getFunctionId());
} return result;
}
@Override result = list.stream().map(pointRuleEntity -> {
@Transactional(rollbackFor = Exception.class) PointRuleResultDTO resultDTO = new PointRuleResultDTO();
public void update(PointRuleDTO dto) { resultDTO.setRuleId(pointRuleEntity.getId());
PointRuleEntity entity = ConvertUtils.sourceToTarget(dto, PointRuleEntity.class); resultDTO.setRuleName(pointRuleEntity.getRuleName());
updateById(entity); resultDTO.setRuleDesc(pointRuleEntity.getRuleDesc());
} PointUnitEnum pointUnitEnum = PointUnitEnum.getEnum(pointRuleEntity.getPointUnit());
if (pointRuleEntity == null || pointRuleEntity.getPoint() == null) {
@Override log.error("list ruleId:{} have not pointUnit or pointNum,pointRule:{}", JSON.toJSONString(pointRuleEntity));
@Transactional(rollbackFor = Exception.class) return null;
public void delete(String[] ids) { }
// 逻辑删除(@TableLogic 注解) resultDTO.setPointValue(pointRuleEntity.getPoint().toString().concat(StrConstant.SEPARATOR).concat(pointUnitEnum.getCode()));
baseDao.deleteBatchIds(Arrays.asList(ids)); return resultDTO;
} }).filter(fun -> fun != null).collect(Collectors.toList());
return result;
}
@Override
public PointDetailResultDTO detail(PointDetailFormDTO formDTO) {
PointRuleEntity pointRuleEntity = baseDao.selectById(formDTO.getRuleId());
if (pointRuleEntity == null) {
throw new RenException(SysResponseEnum.POINT_RULE_IS_NOT_EXIST.getCode(), SysResponseEnum.POINT_RULE_IS_NOT_EXIST.getMsg());
}
return ConvertUtils.sourceToTarget(pointRuleEntity, PointDetailResultDTO.class);
}
@Override
public void update(TokenDto tokenDTO, PointRuleFormDTO formDTO) {
PointRuleEntity entityDB = baseDao.selectById(formDTO.getRuleId());
//数据库不存在或者客户Id不相等 则抛出异常
if (entityDB == null || !entityDB.getCustomerId().equals(formDTO.getCustomerId())) {
throw new RenException(SysResponseEnum.POINT_RULE_IS_NOT_EXIST.getCode(), SysResponseEnum.POINT_RULE_IS_NOT_EXIST.getMsg());
}
PointRuleEntity entityNew = ConvertUtils.sourceToTarget(formDTO, PointRuleEntity.class);
if (entityDB.equals(entityNew)) {
log.warn("update ignore tow entity is same");
return;
}
insertOperateRecord(tokenDTO, formDTO, entityDB, CommonOperateTypeEnum.EDIT.getCode());
baseDao.updateByCustomerId(entityNew);
}
@Override
public void add(TokenDto tokenDTO, PointRuleFormDTO formDTO) {
PointRuleEntity entity = ConvertUtils.sourceToTarget(formDTO, PointRuleEntity.class);
if (tokenDTO == null){
insertOperateRecord(tokenDTO, formDTO, null, CommonOperateTypeEnum.ADD.getCode());
}
baseDao.insert(entity);
}
private void insertOperateRecord(TokenDto tokenDTO, PointRuleFormDTO formDTO, PointRuleEntity entityDB, String opType) {
CustomerStaffDTO userInfo = getCustomerStaff(tokenDTO.getUserId());
RuleOperateLogEntity record = new RuleOperateLogEntity();
record.setCustomerId(formDTO.getCustomerId());
record.setRuleId(entityDB.getId());
record.setOpType(opType);
record.setOpUser(userInfo.getRealName());
record.setBefordData(JSON.toJSONString(entityDB));
record.setAfterData(JSON.toJSONString(formDTO));
ruleOperateLogDao.insert(record);
}
private CustomerStaffDTO getCustomerStaff(String userId) {
Result<CustomerStaffDTO> resultStaff = epmetUserOpenFeignClient.getCustomerStaff(userId);
if (!resultStaff.success() || null == resultStaff.getData()) {
throw new RenException(SysResponseEnum.THIRD_SERVICE_ERROR.getMsg());
}
return resultStaff.getData();
}
} }

22
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/SysOperateLogServiceImpl.java

@ -20,12 +20,12 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.dao.RuleOperateLogDao;
import com.epmet.dao.SysOperateLogDao;
import com.epmet.dto.SysOperateLogDTO; import com.epmet.dto.SysOperateLogDTO;
import com.epmet.entity.SysOperateLogEntity; import com.epmet.entity.RuleOperateLogEntity;
import com.epmet.service.SysOperateLogService; import com.epmet.service.SysOperateLogService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -42,11 +42,11 @@ import java.util.Map;
* @since v1.0.0 2020-07-20 * @since v1.0.0 2020-07-20
*/ */
@Service @Service
public class SysOperateLogServiceImpl extends BaseServiceImpl<SysOperateLogDao, SysOperateLogEntity> implements SysOperateLogService { public class SysOperateLogServiceImpl extends BaseServiceImpl<RuleOperateLogDao, RuleOperateLogEntity> implements SysOperateLogService {
@Override @Override
public PageData<SysOperateLogDTO> page(Map<String, Object> params) { public PageData<SysOperateLogDTO> page(Map<String, Object> params) {
IPage<SysOperateLogEntity> page = baseDao.selectPage( IPage<RuleOperateLogEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false), getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params) getWrapper(params)
); );
@ -55,15 +55,15 @@ public class SysOperateLogServiceImpl extends BaseServiceImpl<SysOperateLogDao,
@Override @Override
public List<SysOperateLogDTO> list(Map<String, Object> params) { public List<SysOperateLogDTO> list(Map<String, Object> params) {
List<SysOperateLogEntity> entityList = baseDao.selectList(getWrapper(params)); List<RuleOperateLogEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, SysOperateLogDTO.class); return ConvertUtils.sourceToTarget(entityList, SysOperateLogDTO.class);
} }
private QueryWrapper<SysOperateLogEntity> getWrapper(Map<String, Object> params){ private QueryWrapper<RuleOperateLogEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP); String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<SysOperateLogEntity> wrapper = new QueryWrapper<>(); QueryWrapper<RuleOperateLogEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper; return wrapper;
@ -71,21 +71,21 @@ public class SysOperateLogServiceImpl extends BaseServiceImpl<SysOperateLogDao,
@Override @Override
public SysOperateLogDTO get(String id) { public SysOperateLogDTO get(String id) {
SysOperateLogEntity entity = baseDao.selectById(id); RuleOperateLogEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, SysOperateLogDTO.class); return ConvertUtils.sourceToTarget(entity, SysOperateLogDTO.class);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void save(SysOperateLogDTO dto) { public void save(SysOperateLogDTO dto) {
SysOperateLogEntity entity = ConvertUtils.sourceToTarget(dto, SysOperateLogEntity.class); RuleOperateLogEntity entity = ConvertUtils.sourceToTarget(dto, RuleOperateLogEntity.class);
insert(entity); insert(entity);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(SysOperateLogDTO dto) { public void update(SysOperateLogDTO dto) {
SysOperateLogEntity entity = ConvertUtils.sourceToTarget(dto, SysOperateLogEntity.class); RuleOperateLogEntity entity = ConvertUtils.sourceToTarget(dto, RuleOperateLogEntity.class);
updateById(entity); updateById(entity);
} }

52
epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/epmet_point.sql

@ -1,33 +1,33 @@
CREATE TABLE point_rule( CREATE TABLE `point_rule` (
ID VARCHAR(64) NOT NULL COMMENT '主键' , `ID` varchar(64) NOT NULL COMMENT '主键',
CUSTOMER_ID VARCHAR(64) COMMENT '客户ID' , `CUSTOMER_ID` varchar(64) DEFAULT NULL COMMENT '客户ID',
RULE_NAME VARCHAR(32) COMMENT '规则名称 与事件名称保持一致即可' , `RULE_NAME` varchar(32) DEFAULT NULL COMMENT '规则名称 与事件名称保持一致即可',
RULE_DESC VARCHAR(32) COMMENT '规则说明 事件说明' , `RULE_DESC` varchar(32) DEFAULT NULL COMMENT '规则说明 事件说明',
EVENT_CODE VARCHAR(32) COMMENT '事件CODE 来自事件表' , `EVENT_CODE` varchar(32) DEFAULT NULL COMMENT '事件CODE 来自事件表',
EVENT_NAME VARCHAR(32) COMMENT '事件名称 来自事件表' , `FUNCTION_ID` varchar(32) DEFAULT NULL COMMENT '功能分组Id 来自customize.function',
OPERATE_TYPE VARCHAR(32) COMMENT '操作类型 加积分:add;减积分:subtract' , `OPERATE_TYPE` varchar(32) DEFAULT NULL COMMENT '操作类型 加积分:add;减积分:subtract',
UP_LIMIT INT COMMENT '积分上限' , `UP_LIMIT` int(11) DEFAULT NULL COMMENT '积分上限',
UP_LIMIT_DESC VARCHAR(64) COMMENT '积分上限描述' , `UP_LIMIT_DESC` varchar(64) DEFAULT NULL COMMENT '积分上限描述',
POINT_NUM INT DEFAULT 0 COMMENT '获得积分值' , `POINT` int(11) DEFAULT '0' COMMENT '单位积分值',
POINT_UNIT VARCHAR(32) COMMENT '获得积分单位 次:time;分钟:minute;小时:hour' , `POINT_UNIT` varchar(32) DEFAULT NULL COMMENT '获得积分单位 次:time;分钟:minute;小时:hour',
ENABLED_FLAG VARCHAR(1) COMMENT '是否启用 0-否,1-是' , `ENABLED_FLAG` varchar(1) DEFAULT NULL COMMENT '是否启用 0-否,1-是',
DEL_FLAG VARCHAR(1) COMMENT '删除标识 0-否,1-是' , `DEL_FLAG` varchar(1) DEFAULT NULL COMMENT '删除标识 0-否,1-是',
REVISION INT COMMENT '乐观锁' , `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
CREATED_BY VARCHAR(32) COMMENT '创建人' , `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
CREATED_TIME DATETIME COMMENT '创建时间' , `CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
UPDATED_BY VARCHAR(32) COMMENT '更新人' , `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
UPDATED_TIME DATETIME COMMENT '更新时间' , `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (ID) PRIMARY KEY (`ID`),
) COMMENT = '积分规则表'; UNIQUE KEY `unx_cus_event` (`CUSTOMER_ID`,`EVENT_CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分规则表';
CREATE TABLE sys_operate_log( CREATE TABLE rule_operate_log(
ID VARCHAR(64) NOT NULL COMMENT '主键' , ID VARCHAR(64) NOT NULL COMMENT '主键' ,
CUSTOMER_ID VARCHAR(64) COMMENT '客户ID' , CUSTOMER_ID VARCHAR(64) COMMENT '客户ID' ,
OBJECT_ID VARCHAR(64) COMMENT '操作对象ID' , RULE_ID VARCHAR(64) COMMENT '规则ID' ,
OBJECT_TYPE VARCHAR(64) COMMENT '对象类型 规则:rule' ,
OP_TYPE VARCHAR(32) COMMENT '操作类型 新建:add,编辑:edit,删除:del;' , OP_TYPE VARCHAR(32) COMMENT '操作类型 新建:add,编辑:edit,删除:del;' ,
OP_USER VARCHAR(64) COMMENT '操作用户 操作人' , OP_USER VARCHAR(64) COMMENT '操作用户 操作人' ,
BEFORD_DATA VARCHAR(1024) COMMENT '变更前数据 JSON串' , BEFORE_DATA VARCHAR(1024) COMMENT '变更前数据 JSON串' ,
AFTER_DATA VARCHAR(1024) COMMENT '变更后数据 JSON串' , AFTER_DATA VARCHAR(1024) COMMENT '变更后数据 JSON串' ,
DEL_FLAG VARCHAR(1) COMMENT '删除标识 0-否,1-是' , DEL_FLAG VARCHAR(1) COMMENT '删除标识 0-否,1-是' ,
REVISION INT COMMENT '乐观锁' , REVISION INT COMMENT '乐观锁' ,
@ -36,4 +36,4 @@ CREATE TABLE sys_operate_log(
UPDATED_BY VARCHAR(32) COMMENT '更新人' , UPDATED_BY VARCHAR(32) COMMENT '更新人' ,
UPDATED_TIME DATETIME COMMENT '更新时间' , UPDATED_TIME DATETIME COMMENT '更新时间' ,
PRIMARY KEY (ID) PRIMARY KEY (ID)
) COMMENT = '积分系统操作记录表'; ) COMMENT = '积分规则操作记录表';

19
epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml

@ -9,11 +9,10 @@
<result property="ruleName" column="RULE_NAME"/> <result property="ruleName" column="RULE_NAME"/>
<result property="ruleDesc" column="RULE_DESC"/> <result property="ruleDesc" column="RULE_DESC"/>
<result property="eventCode" column="EVENT_CODE"/> <result property="eventCode" column="EVENT_CODE"/>
<result property="eventName" column="EVENT_NAME"/>
<result property="operateType" column="OPERATE_TYPE"/> <result property="operateType" column="OPERATE_TYPE"/>
<result property="upLimit" column="UP_LIMIT"/> <result property="upLimit" column="UP_LIMIT"/>
<result property="upLimitDesc" column="UP_LIMIT_DESC"/> <result property="upLimitDesc" column="UP_LIMIT_DESC"/>
<result property="pointNum" column="POINT_NUM"/> <result property="point" column="POINT"/>
<result property="pointUnit" column="POINT_UNIT"/> <result property="pointUnit" column="POINT_UNIT"/>
<result property="enabledFlag" column="ENABLED_FLAG"/> <result property="enabledFlag" column="ENABLED_FLAG"/>
<result property="delFlag" column="DEL_FLAG"/> <result property="delFlag" column="DEL_FLAG"/>
@ -23,6 +22,18 @@
<result property="updatedBy" column="UPDATED_BY"/> <result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/> <result property="updatedTime" column="UPDATED_TIME"/>
</resultMap> </resultMap>
<select id="selectFunctionIds" resultType="java.lang.String">
SELECT DISTINCT FUNCTION_ID FROM point_rule WHERE CUSTOMSER_ID = #{customerId,jdbcType=VARCHAR}
</select>
<select id="selectListByFunctionId" resultMap="pointRuleMap">
SELECT ID,RULE_NAME,RULE_DESC,POINT_NUM,POINT_UNIT FROM point_rule WHERE CUSTOMSER_ID = #{customerId,jdbcType=VARCHAR}
</select>
<update id="updateByCustomerId">
UPDATE point_rule
SET
POINT = #{point,jdbcType=INTEGER},
ENABLED_FLAG = #{enabledFlag,jdbcType=VARCHAR},
UP_LIMIT = #{upLimit,jdbcType=INTEGER}
WHERE id = #{id,jdbcType=VARCHAR} and CUSTOMER_ID = #{customerId,jdbcType=VARCHAR}
</update>
</mapper> </mapper>

4
epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/SysOperateLogDao.xml → epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/RuleOperateLogDao.xml

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.SysOperateLogDao"> <mapper namespace="com.epmet.dao.RuleOperateLogDao">
<resultMap type="com.epmet.entity.SysOperateLogEntity" id="sysOperateLogMap"> <resultMap type="com.epmet.entity.RuleOperateLogEntity" id="sysOperateLogMap">
<result property="id" column="ID"/> <result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/> <result property="customerId" column="CUSTOMER_ID"/>
<result property="objectId" column="OBJECT_ID"/> <result property="objectId" column="OBJECT_ID"/>

10
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java

@ -1,9 +1,13 @@
package com.epmet.feign; package com.epmet.feign;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.CustomerFunctionListFormDTO;
import com.epmet.dto.result.DefaultFunctionListResultDTO;
import com.epmet.feign.fallback.OperCustomizeOpenFeignClientFallback; import com.epmet.feign.fallback.OperCustomizeOpenFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import java.util.List;
/** /**
* 本服务对外开放的API,其他服务通过引用此client调用该服务 * 本服务对外开放的API,其他服务通过引用此client调用该服务
@ -13,5 +17,5 @@ import com.epmet.feign.fallback.OperCustomizeOpenFeignClientFallback;
*/ */
@FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallback = OperCustomizeOpenFeignClientFallback.class) @FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallback = OperCustomizeOpenFeignClientFallback.class)
public interface OperCustomizeOpenFeignClient { public interface OperCustomizeOpenFeignClient {
Result<List<DefaultFunctionListResultDTO>> getOpenedFunctionList(CustomerFunctionListFormDTO formDTO);
} }

18
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java

@ -1,7 +1,16 @@
package com.epmet.feign.fallback; package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.CustomerFunctionListFormDTO;
import com.epmet.dto.result.DefaultFunctionListResultDTO;
import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
/** /**
* 本服务对外开放的API,其他服务通过引用此client调用该服务 * 本服务对外开放的API,其他服务通过引用此client调用该服务
@ -12,10 +21,13 @@ import org.springframework.stereotype.Component;
@Component @Component
public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFeignClient { public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFeignClient {
/** /**
* 从缓存中查询已登录用户的基本信息以及角色等相关信息 * 获取客户已开通的功能列表
* *
* @return * @return
*/ */
//@PostMapping(value = "/epmetuser/user/loginuserdetails", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) @Override
//Result<LoginUserDetailsResultDTO> getLoginUserDetails(@RequestBody LoginUserDetailsFormDTO dto); @PostMapping(value = "/oper/customize/customerfunction/getOpenedFunctionList", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public Result<List<DefaultFunctionListResultDTO>> getOpenedFunctionList(CustomerFunctionListFormDTO formDTO){
return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getOpenedFunctionList", formDTO);
}
} }

6
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFunctionController.java

@ -133,8 +133,8 @@ public class CustomerFunctionController {
* @param formDTO * @param formDTO
* @return * @return
*/ */
@PostMapping("customeropenedfunction") @PostMapping("openedfunctionlist")
public Result<List<DefaultFunctionListResultDTO>> customerOpenedFunction(@RequestBody CustomerFunctionListFormDTO formDTO) { public Result<List<DefaultFunctionListResultDTO>> getOpenedFunctionList(@RequestBody CustomerFunctionListFormDTO formDTO) {
return new Result<List<DefaultFunctionListResultDTO>>().ok(customerFunctionService.customerOpenedFunction(formDTO)); return new Result<List<DefaultFunctionListResultDTO>>().ok(customerFunctionService.getOpenedFunctionList(formDTO));
} }
} }

2
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFunctionService.java

@ -118,5 +118,5 @@ public interface CustomerFunctionService extends BaseService<CustomerFunctionEnt
* @param formDTO * @param formDTO
* @return * @return
*/ */
List<DefaultFunctionListResultDTO> customerOpenedFunction(CustomerFunctionListFormDTO formDTO); List<DefaultFunctionListResultDTO> getOpenedFunctionList(CustomerFunctionListFormDTO formDTO);
} }

41
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFunctionServiceImpl.java

@ -17,11 +17,13 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
@ -41,15 +43,15 @@ import com.epmet.entity.CustomerFunctionEntity;
import com.epmet.feign.OperCrmFeignClient; import com.epmet.feign.OperCrmFeignClient;
import com.epmet.redis.CustomerFunctionRedis; import com.epmet.redis.CustomerFunctionRedis;
import com.epmet.service.CustomerFunctionService; import com.epmet.service.CustomerFunctionService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays; import java.util.stream.Collectors;
import java.util.List;
import java.util.Map;
/** /**
* 客户功能权限表 * 客户功能权限表
@ -57,6 +59,7 @@ import java.util.Map;
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2020-03-10 * @since v1.0.0 2020-03-10
*/ */
@Slf4j
@Service @Service
public class CustomerFunctionServiceImpl extends BaseServiceImpl<CustomerFunctionDao, CustomerFunctionEntity> implements CustomerFunctionService { public class CustomerFunctionServiceImpl extends BaseServiceImpl<CustomerFunctionDao, CustomerFunctionEntity> implements CustomerFunctionService {
@ -211,8 +214,34 @@ public class CustomerFunctionServiceImpl extends BaseServiceImpl<CustomerFunctio
} }
@Override @Override
public List<DefaultFunctionListResultDTO> customerOpenedFunction(CustomerFunctionListFormDTO formDTO) { public List<DefaultFunctionListResultDTO> getOpenedFunctionList(CustomerFunctionListFormDTO formDTO) {
return null; if (StringUtils.isBlank(formDTO.getCustomerId())){
throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getMsg());
}
List<DefaultFunctionListResultDTO> result = new ArrayList<>();
//查询所有已上架功能列表(默认、定制功能)
List<FunctionDTO> funList = functionDao.selectFunctionList();
if(CollectionUtils.isEmpty(funList)){
return result;
}
//查询当前客户已拥有的功能
List<CustomerFunctionDTO> openedList = baseDao.selectCustomerFunctionList(formDTO.getCustomerId());
if(CollectionUtils.isEmpty(openedList)){
log.warn("getOpenedFunctionList customerId:{} have any function",formDTO.getCustomerId());
return result;
}
Set<String> openedFunIdSet = openedList.stream().map(CustomerFunctionDTO::getFunctionId).collect(Collectors.toSet());
for (FunctionDTO function : funList) {
if (openedFunIdSet.contains(function.getId())) {
DefaultFunctionListResultDTO resultDTO = ConvertUtils.sourceToTarget(function, DefaultFunctionListResultDTO.class);
if (resultDTO == null) {
log.error("getOpenedFunctionList convert return null,function:{}", JSON.toJSONString(function));
continue;
}
result.add(resultDTO);
}
}
return result;
} }
} }
Loading…
Cancel
Save