Browse Source

@PointsBehavior开发

feature/dangjian
尹作梅 6 years ago
parent
commit
d531a4ace8
  1. 27
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsLimitTimeEnum.java
  2. 24
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationEnum.java
  3. 34
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java
  4. 26
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsRuleAvailableEnum.java
  5. 28
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsUpperLimitEnum.java
  6. 121
      esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/logs/PointsLogsDTO.java
  7. 46
      esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/logs/UserPointsLogDTO.java
  8. 44
      esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/enums/PointsRuleEnum.java
  9. 12
      esua-epdc/epdc-module/epdc-points/epdc-points-server/pom.xml
  10. 29
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/UserFeignClient.java
  11. 22
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/UserFeignClientFallback.java
  12. 93
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/controller/PointsLogsController.java
  13. 33
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/dao/PointsLogsDao.java
  14. 91
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/entity/PointsLogsEntity.java
  15. 86
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/excel/PointsLogsExcel.java
  16. 47
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/redis/PointsLogsRedis.java
  17. 96
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/service/PointsLogsService.java
  18. 106
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/service/impl/PointsLogsServiceImpl.java
  19. 9
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/rule/service/impl/PointsRuleServiceImpl.java
  20. 42
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/support/annotion/PointsBehavior.java
  21. 209
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/support/aop/PointsBehaviorAop.java
  22. 27
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/logs/PointsLogsDao.xml
  23. 29
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserPointsFormDTO.java
  24. 13
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java
  25. 9
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java
  26. 21
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java

27
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsLimitTimeEnum.java

@ -0,0 +1,27 @@
package com.elink.esua.epdc.commons.tools.enums.pointsenum;
/**
* @Auther: yinzuomei
* @Date: 2019/12/13 09:43
* @Description: 积分规则限制时限枚举类
*/
public enum PointsLimitTimeEnum {
/**
* 限制时限(0-分钟1-小时2-3-4-)
*/
LIMIT_TIME_MINUTE("0"),
LIMIT_TIME_HOUR("1"),
LIMIT_TIME_DAY("2"),
LIMIT_TIME_MONTH("3"),
LIMIT_TIME_YEAR("4");
private String value;
PointsLimitTimeEnum(String value) {
this.value = value;
}
public String value() {
return value;
}
}

24
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationEnum.java

@ -0,0 +1,24 @@
package com.elink.esua.epdc.commons.tools.enums.pointsenum;
/**
* @Auther: yinzuomei
* @Date: 2019/12/13 09:31
* @Description: 积分操作类型枚举类
*/
public enum PointsOperationEnum {
/**
* 规则操作类型(0-减积分1-加积分)
*/
OPERATION_TYPE_ADD("1"),
OPERATION_TYPE_SUBSTRACT("0");
private String operationType;
PointsOperationEnum(String operationType) {
this.operationType = operationType;
}
public String getOperationType() {
return operationType;
}
}

34
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java

@ -0,0 +1,34 @@
package com.elink.esua.epdc.commons.tools.enums.pointsenum;
/**
* @Auther: yinzuomei
* @Date: 2019/12/13 09:33
* @Description: 积分操作方式枚举类
*/
public enum PointsOperationModeEnum {
/**
* user-用户操作
*/
OPERATION_MODE_USER("user"),
/**
* admin-管理员操作
*/
OPERATION_MODE_ADMIN("admin"),
/**
* sys-系统操作
*/
OPERATION_MODE_SYS("sys");
private String operationMode;
PointsOperationModeEnum(String operationMode) {
this.operationMode = operationMode;
}
public String getOperationMode() {
return operationMode;
}
}

26
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsRuleAvailableEnum.java

@ -0,0 +1,26 @@
package com.elink.esua.epdc.commons.tools.enums.pointsenum;
/**
* @Auther: yinzuomei
* @Date: 2019/12/12 15:04
* @Description: 积分规则可用标志枚举类
*/
public enum PointsRuleAvailableEnum {
/**
* 可用标记(0-不可用1-可用)
*/
AVAILABLE_TRUE("1"),
AVAILABLE_FALSE("0");
private String value;
PointsRuleAvailableEnum(String value) {
this.value = value;
}
public String value() {
return value;
}
}

28
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsUpperLimitEnum.java

@ -0,0 +1,28 @@
package com.elink.esua.epdc.commons.tools.enums.pointsenum;
/**
* @Auther: yinzuomei
* @Date: 2019/12/13 09:48
* @Description: 积分是否有上限限制 枚举类
*/
public enum PointsUpperLimitEnum {
/**
*
*/
YES("1"),
/**
*
*/
NO("0");
private String value;
PointsUpperLimitEnum(String value) {
this.value = value;
}
public String value() {
return value;
}
}

121
esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/logs/PointsLogsDTO.java

@ -0,0 +1,121 @@
/**
* 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.elink.esua.epdc.dto.logs;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 积分日志表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-13
*/
@Data
public class PointsLogsDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 志愿者ID
*/
private String volunteerId;
/**
* 用户ID
*/
private String userId;
/**
* 积分操作类型0-减积分1-加积分
*/
private String operationType;
/**
* 操作积分值
*/
private Integer points;
/**
* 操作描述
*/
private String operationDesc;
/**
* 操作时间
*/
private Date operationTime;
/**
* 操作方式user-用户操作admin-管理员操作sys-系统操作
*/
private String operationMode;
/**
* 积分规则编码
*/
private String ruleCode;
/**
* 是否操作成功(0-失败1-成功)
*/
private String status;
/**
* 操作失败原因
*/
private String failureReason;
/**
* 删除标记
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

46
esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/logs/UserPointsLogDTO.java

@ -0,0 +1,46 @@
package com.elink.esua.epdc.dto.logs;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description @PointsBehavior 入参DTO
* @Author yinzuomei
* @Date 2019/12/13 10:11
*/
@Data
public class UserPointsLogDTO implements Serializable {
private static final long serialVersionUID = -4809148536169854292L;
/**
* 积分操作类型(加积分减积分)
*/
@NotBlank(message = "积分操作类型不能为空")
private String operationType;
/**
* 积分操作方式(user-用户操作admin-管理员操作sys-系统操作)
*/
@NotBlank(message = "积分操作方式不能为空")
private String operationMode;
/**
* VOLUNTEER_ID 志愿者ID
*/
@NotBlank(message = "志愿者id不能为空")
private String volunteerId;
/**
* 用户ID
*/
@NotBlank(message = "用户id不能为空")
private String userId;
/**
* 规则编码
*/
@NotBlank(message = "规则编码不能为空")
private String ruleCode;
}

44
esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/enums/PointsRuleEnum.java

@ -1,44 +0,0 @@
package com.elink.esua.epdc.enums;
/**
* @Auther: yinzuomei
* @Date: 2019/12/12 15:04
* @Description: 积分规则表枚举类
*/
public enum PointsRuleEnum {
/**
* 规则操作类型(0-减积分1-加积分)
*/
OPERATION_TYPE_ADD("1"),
OPERATION_TYPE_SUBSTRACT("0"),
/**
* 可用标记(0-不可用1-可用)
*/
AVAILABLE_TRUE("1"),
AVAILABLE_FALSE("0"),
/**
* 积分是否有上限限制(0-1-)
*/
UPPER_LIMIT_FLAG_TRUE("1"),
UPPER_LIMIT_FLAG_FALSE("0"),
/**
* 限制时限(0-分钟1-小时2-3-4-)
*/
LIMIT_TIME_MINUTE("0"),
LIMIT_TIME_HOUR("1"),
LIMIT_TIME_DAY("2"),
LIMIT_TIME_MONTH("3"),
LIMIT_TIME_YEAR("4");
private String value;
PointsRuleEnum(String value) {
this.value = value;
}
public String value() {
return value;
}
}

12
esua-epdc/epdc-module/epdc-points/epdc-points-server/pom.xml

@ -50,6 +50,12 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-user-client</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
@ -121,7 +127,7 @@
<spring.redis.password>elink@888</spring.redis.password>
<spring.datasource.druid.url>
<![CDATA[jdbc:mysql://47.104.224.45:3308/esua_epdc_mutuality?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
<![CDATA[jdbc:mysql://47.104.224.45:3308/esua_epdc_points?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</spring.datasource.druid.url>
<spring.datasource.druid.username>root</spring.datasource.druid.username>
<spring.datasource.druid.password>shibei@888</spring.datasource.druid.password>
@ -146,7 +152,7 @@
<spring.redis.password>elink@888</spring.redis.password>
<spring.datasource.druid.url>
<![CDATA[jdbc:mysql://47.104.224.45:3308/esua_epdc_mutuality?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
<![CDATA[jdbc:mysql://47.104.224.45:3308/esua_epdc_points?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</spring.datasource.druid.url>
<spring.datasource.druid.username>epdc</spring.datasource.druid.username>
<spring.datasource.druid.password>elink888</spring.datasource.druid.password>
@ -171,7 +177,7 @@
<spring.redis.password>elink@888</spring.redis.password>
<spring.datasource.druid.url>
<![CDATA[jdbc:mysql://47.104.224.45:3308/esua_epdc_mutuality?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
<![CDATA[jdbc:mysql://47.104.224.45:3308/esua_epdc_points?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</spring.datasource.druid.url>
<spring.datasource.druid.username>epdc</spring.datasource.druid.username>
<spring.datasource.druid.password>elink888</spring.datasource.druid.password>

29
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/UserFeignClient.java

@ -0,0 +1,29 @@
package com.elink.esua.epdc.modules.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO;
import com.elink.esua.epdc.modules.feign.fallback.UserFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
/**
* @Description 用户模块
* @Author yinzuomei
* @Date 2019/12/13 10:00
*/
@FeignClient(name = ServiceConstant.EPDC_USER_SERVER, fallback = UserFeignClientFallback.class,url = "http://127.0.0.1:9068")
public interface UserFeignClient {
/**
* @param formDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @Author yinzuomei
* @Description 根据操作类型更新用户积分
* @Date 2019/12/13 15:12
**/
@PostMapping(value = "app-user/user/handleUserPoints", consumes = MediaType.APPLICATION_JSON_VALUE)
Result handleUserPoints(EpdcUserPointsFormDTO formDTO);
}

22
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/UserFeignClientFallback.java

@ -0,0 +1,22 @@
package com.elink.esua.epdc.modules.feign.fallback;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO;
import com.elink.esua.epdc.modules.feign.UserFeignClient;
import org.springframework.stereotype.Component;
/**
* @Description
* @Author yinzuomei
* @Date 2019/12/13 10:00
*/
@Component
public class UserFeignClientFallback implements UserFeignClient {
@Override
public Result handleUserPoints(EpdcUserPointsFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "handleUserPoints", formDTO);
}
}

93
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/controller/PointsLogsController.java

@ -0,0 +1,93 @@
/**
* 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.elink.esua.epdc.modules.logs.controller;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ExcelUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.AssertUtils;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.logs.PointsLogsDTO;
import com.elink.esua.epdc.modules.logs.excel.PointsLogsExcel;
import com.elink.esua.epdc.modules.logs.service.PointsLogsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 积分日志表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-13
*/
@RestController
@RequestMapping("pointslogs")
public class PointsLogsController {
@Autowired
private PointsLogsService pointsLogsService;
@GetMapping("page")
public Result<PageData<PointsLogsDTO>> page(@RequestParam Map<String, Object> params){
PageData<PointsLogsDTO> page = pointsLogsService.page(params);
return new Result<PageData<PointsLogsDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<PointsLogsDTO> get(@PathVariable("id") String id){
PointsLogsDTO data = pointsLogsService.get(id);
return new Result<PointsLogsDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody PointsLogsDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
return pointsLogsService.save(dto);
}
@PutMapping
public Result update(@RequestBody PointsLogsDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
pointsLogsService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
pointsLogsService.delete(ids);
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<PointsLogsDTO> list = pointsLogsService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, PointsLogsExcel.class);
}
}

33
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/dao/PointsLogsDao.java

@ -0,0 +1,33 @@
/**
* 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.elink.esua.epdc.modules.logs.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.modules.logs.entity.PointsLogsEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 积分日志表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-13
*/
@Mapper
public interface PointsLogsDao extends BaseDao<PointsLogsEntity> {
}

91
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/entity/PointsLogsEntity.java

@ -0,0 +1,91 @@
/**
* 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.elink.esua.epdc.modules.logs.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 积分日志表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-13
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("epdc_points_logs")
public class PointsLogsEntity extends BaseEpdcEntity {
private static final long serialVersionUID = 1L;
/**
* 志愿者ID
*/
private String volunteerId;
/**
* 用户ID
*/
private String userId;
/**
* 积分操作类型0-减积分1-加积分
*/
private String operationType;
/**
* 操作积分值
*/
private Integer points;
/**
* 操作描述
*/
private String operationDesc;
/**
* 操作时间
*/
private Date operationTime;
/**
* 操作方式user-用户操作admin-管理员操作sys-系统操作
*/
private String operationMode;
/**
* 积分规则编码
*/
private String ruleCode;
/**
* 是否操作成功(0-失败1-成功)
*/
private String status;
/**
* 操作失败原因
*/
private String failureReason;
}

86
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/excel/PointsLogsExcel.java

@ -0,0 +1,86 @@
/**
* 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.elink.esua.epdc.modules.logs.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
* 积分日志表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-13
*/
@Data
public class PointsLogsExcel {
@Excel(name = "主键")
private String id;
@Excel(name = "志愿者ID")
private String volunteerId;
@Excel(name = "用户ID")
private String userId;
@Excel(name = "积分操作类型(0-减积分,1-加积分)")
private String operationType;
@Excel(name = "操作积分值")
private Integer points;
@Excel(name = "操作描述")
private String operationDesc;
@Excel(name = "操作时间")
private Date operationTime;
@Excel(name = "操作方式(user-用户操作,admin-管理员操作,sys-系统操作)")
private String operationMode;
@Excel(name = "积分规则编码")
private String ruleCode;
@Excel(name = "是否操作成功(0-失败,1-成功)")
private String status;
@Excel(name = "操作失败原因")
private String failureReason;
@Excel(name = "删除标记")
private String delFlag;
@Excel(name = "乐观锁")
private Integer revision;
@Excel(name = "创建人")
private String createdBy;
@Excel(name = "创建时间")
private Date createdTime;
@Excel(name = "更新人")
private String updatedBy;
@Excel(name = "更新时间")
private Date updatedTime;
}

47
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/redis/PointsLogsRedis.java

@ -0,0 +1,47 @@
/**
* 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.elink.esua.epdc.modules.logs.redis;
import com.elink.esua.epdc.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 积分日志表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-13
*/
@Component
public class PointsLogsRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

96
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/service/PointsLogsService.java

@ -0,0 +1,96 @@
/**
* 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.elink.esua.epdc.modules.logs.service;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.logs.PointsLogsDTO;
import com.elink.esua.epdc.modules.logs.entity.PointsLogsEntity;
import java.util.List;
import java.util.Map;
/**
* 积分日志表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-13
*/
public interface PointsLogsService extends BaseService<PointsLogsEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<PointsLogsDTO>
* @author generator
* @date 2019-12-13
*/
PageData<PointsLogsDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<PointsLogsDTO>
* @author generator
* @date 2019-12-13
*/
List<PointsLogsDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return PointsLogsDTO
* @author generator
* @date 2019-12-13
*/
PointsLogsDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2019-12-13
*/
Result save(PointsLogsDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2019-12-13
*/
void update(PointsLogsDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2019-12-13
*/
void delete(String[] ids);
}

106
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/service/impl/PointsLogsServiceImpl.java

@ -0,0 +1,106 @@
/**
* 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.elink.esua.epdc.modules.logs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.logs.PointsLogsDTO;
import com.elink.esua.epdc.modules.logs.dao.PointsLogsDao;
import com.elink.esua.epdc.modules.logs.entity.PointsLogsEntity;
import com.elink.esua.epdc.modules.logs.redis.PointsLogsRedis;
import com.elink.esua.epdc.modules.logs.service.PointsLogsService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 积分日志表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-13
*/
@Service
public class PointsLogsServiceImpl extends BaseServiceImpl<PointsLogsDao, PointsLogsEntity> implements PointsLogsService {
@Autowired
private PointsLogsRedis pointsLogsRedis;
@Override
public PageData<PointsLogsDTO> page(Map<String, Object> params) {
IPage<PointsLogsEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, PointsLogsDTO.class);
}
@Override
public List<PointsLogsDTO> list(Map<String, Object> params) {
List<PointsLogsEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, PointsLogsDTO.class);
}
private QueryWrapper<PointsLogsEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<PointsLogsEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public PointsLogsDTO get(String id) {
PointsLogsEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, PointsLogsDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Result save(PointsLogsDTO dto) {
PointsLogsEntity entity = ConvertUtils.sourceToTarget(dto, PointsLogsEntity.class);
insert(entity);
return new Result();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(PointsLogsDTO dto) {
PointsLogsEntity entity = ConvertUtils.sourceToTarget(dto, PointsLogsEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

9
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/rule/service/impl/PointsRuleServiceImpl.java

@ -22,13 +22,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.enums.pointsenum.PointsRuleAvailableEnum;
import com.elink.esua.epdc.commons.tools.enums.pointsenum.PointsUpperLimitEnum;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.redis.RedisKeys;
import com.elink.esua.epdc.commons.tools.redis.RedisUtils;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.rule.PointsRuleDTO;
import com.elink.esua.epdc.enums.PointsRuleEnum;
import com.elink.esua.epdc.modules.rule.dao.PointsRuleDao;
import com.elink.esua.epdc.modules.rule.entity.PointsRuleEntity;
import com.elink.esua.epdc.modules.rule.redis.PointsRuleRedis;
@ -116,7 +117,7 @@ public class PointsRuleServiceImpl extends BaseServiceImpl<PointsRuleDao, Points
if (!checkResult.success()) {
return checkResult;
}
dto.setAvailable(PointsRuleEnum.AVAILABLE_TRUE.value());//可用标记(0-不可用,1-可用) 新增时默认可用
dto.setAvailable(PointsRuleAvailableEnum.AVAILABLE_TRUE.value());//可用标记(0-不可用,1-可用) 新增时默认可用
PointsRuleEntity entity = ConvertUtils.sourceToTarget(dto, PointsRuleEntity.class);
insert(entity);
String pointsRuleKey = RedisKeys.getPointsRuleKey(dto.getRuleCode());
@ -162,7 +163,7 @@ public class PointsRuleServiceImpl extends BaseServiceImpl<PointsRuleDao, Points
@Override
public Result initPointsRuleRedis() {
QueryWrapper<PointsRuleEntity> wrapper = new QueryWrapper<>();
wrapper.eq("AVAILABLE", PointsRuleEnum.AVAILABLE_TRUE.value());
wrapper.eq("AVAILABLE", PointsRuleAvailableEnum.AVAILABLE_TRUE.value());
List<PointsRuleEntity> pointsRuleEntityList = baseDao.selectList(wrapper);
for (PointsRuleEntity pointsRuleEntity : pointsRuleEntityList) {
String pointsRuleKey = RedisKeys.getPointsRuleKey(pointsRuleEntity.getRuleCode());
@ -210,7 +211,7 @@ public class PointsRuleServiceImpl extends BaseServiceImpl<PointsRuleDao, Points
**/
public Result checkPointsRuleDTO(PointsRuleDTO dto) {
//规则有上限值:积分值不能大于上限值
if (PointsRuleEnum.UPPER_LIMIT_FLAG_TRUE.value().equals(dto.getUpperLimitFlag())
if (PointsUpperLimitEnum.YES.value().equals(dto.getUpperLimitFlag())
&& dto.getPoints() > dto.getUpperLimitVal()) {
return new Result().error("积分值不能大于上限值");
}

42
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/support/annotion/PointsBehavior.java

@ -0,0 +1,42 @@
package com.elink.esua.epdc.support.annotion;
import com.elink.esua.epdc.commons.tools.enums.pointsenum.PointsOperationEnum;
import com.elink.esua.epdc.commons.tools.enums.pointsenum.PointsOperationModeEnum;
import java.lang.annotation.*;
/**
* @Auther: yinzuomei
* @Date: 2019/12/13 09:15
* @Description: 爱心互助积分注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
@Documented
public @interface PointsBehavior {
/**
* 积分操作类型(加积分减积分)
*/
PointsOperationEnum operationType();
/**
* 积分操作方式(user-用户操作admin-管理员操作sys-系统操作)
*/
PointsOperationModeEnum operationMode();
/**
* 志愿者ID
*/
String volunteerId() default "";
/**
* 用户ID
*/
String userId() default "";
/**
* 规则编码
*/
String ruleCode() default "";
}

209
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/support/aop/PointsBehaviorAop.java

@ -0,0 +1,209 @@
package com.elink.esua.epdc.support.aop;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO;
import com.elink.esua.epdc.dto.logs.PointsLogsDTO;
import com.elink.esua.epdc.dto.logs.UserPointsLogDTO;
import com.elink.esua.epdc.dto.rule.PointsRuleDTO;
import com.elink.esua.epdc.modules.feign.UserFeignClient;
import com.elink.esua.epdc.modules.logs.service.PointsLogsService;
import com.elink.esua.epdc.modules.rule.service.PointsRuleService;
import com.elink.esua.epdc.support.annotion.PointsBehavior;
import io.seata.spring.annotation.GlobalTransactional;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Method;
import java.util.Date;
/**
* @Description
* @Author yinzuomei
* @Date 2019/12/13 10:00
*/
@Aspect
@Component
public class PointsBehaviorAop {
private final Logger logger = LogManager.getLogger(getClass());
@Autowired
private PointsLogsService pointsLogsService;
@Autowired
private PointsRuleService pointsRuleService;
@Autowired
private UserFeignClient userFeignClient;
@Pointcut("@annotation(com.elink.esua.epdc.support.annotion.PointsBehavior)")
public void recordUserPointsBehavior() {
}
@AfterReturning("recordUserPointsBehavior()")
public void handleUserPoints(JoinPoint joinPoint) throws Exception {
logger.info("handleUserPoints start");
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
PointsBehavior pointsBehavior = method.getAnnotation(PointsBehavior.class);
Object[] args = joinPoint.getArgs();
String[] argNames = ((MethodSignature) joinPoint.getSignature()).getParameterNames();
//解析入参
UserPointsLogDTO userPointsLogDTO = this.packageUserPointsLogDTO(pointsBehavior, args, argNames);
//校验入参属性都不能为空
ValidatorUtils.validateEntity(userPointsLogDTO);
Result result = this.updateUserPoints(userPointsLogDTO);
if (!result.success()) {
throw new Exception("更新用户积分异常" + result.getMsg());
}
}
/**
* @param userPointsLogDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @Author yinzuomei
* @Description
* @Date 2019/12/13 15:17
**/
private Result updateUserPoints(UserPointsLogDTO userPointsLogDTO) {
//logger.info("解析后的UserPointsLogDTO:" + JSONObject.toJSONString(userPointsLogDTO));
//插入积分日志
PointsLogsDTO pointsLogDto = ConvertUtils.sourceToTarget(userPointsLogDTO, PointsLogsDTO.class);
Result<PointsRuleDTO> pointsRuleDTOResult = pointsRuleService.getPointRule(pointsLogDto.getRuleCode());
pointsLogDto.setOperationDesc(pointsRuleDTOResult.getData().getBehaviorDesc());
pointsLogDto.setPoints(pointsRuleDTOResult.getData().getPoints());
pointsLogDto.setOperationTime(new Date());
pointsLogDto.setStatus(YesOrNoEnum.YES.value());//是否操作成功(0-失败,1-成功)
Result result = pointsLogsService.save(pointsLogDto);
if (!result.success()) {
return result;
}
//修改用户总积分数
EpdcUserPointsFormDTO formDTO = new EpdcUserPointsFormDTO();
formDTO.setOperationType(userPointsLogDTO.getOperationType());
formDTO.setPoints(pointsRuleDTOResult.getData().getPoints());
formDTO.setUserId(userPointsLogDTO.getUserId());
Result res = userFeignClient.handleUserPoints(formDTO);
return res;
}
/**
* @param pointsBehavior
* @param args
* @param argNames
* @return com.elink.esua.epdc.dto.logs.UserPointsLogDTO
* @Author yinzuomei
* @Description
* @Date 2019/12/13 10:29
**/
private UserPointsLogDTO packageUserPointsLogDTO(PointsBehavior pointsBehavior,
Object[] args,
String[] argNames) {
logger.info("packageUserPointsLogDTO start");
UserPointsLogDTO userPointsLogDTO = new UserPointsLogDTO();
userPointsLogDTO.setOperationMode(pointsBehavior.operationMode().getOperationMode());
userPointsLogDTO.setOperationType(pointsBehavior.operationType().getOperationType());
//志愿者ID
String volunteerIdKey = pointsBehavior.volunteerId();
//用户ID
String userIdKey = pointsBehavior.userId();
//规则编码
String ruleCodeKey = pointsBehavior.ruleCode();
if (volunteerIdKey.startsWith("#") && userIdKey.startsWith("#") && ruleCodeKey.startsWith("#")) {
String volunteerId = "";
String userId = "";
String ruleCode = "";
//解析志愿者id
String volunteerIdExpression = volunteerIdKey.substring(2, volunteerIdKey.length() - 1);
String[] volunteerIdStrArr = volunteerIdExpression.split("\\.");
if (volunteerIdStrArr.length > 2 || volunteerIdStrArr.length == 0) {
throw new RuntimeException("记录用户积分注解中volunteerId格式不正确");
}
if (volunteerIdStrArr.length == 1) {
for (int i = 0; i < argNames.length; i++) {
if (argNames[i].equals(volunteerIdStrArr[0])) {
volunteerId = String.valueOf(args[i]);
}
}
} else if (volunteerIdStrArr.length == 2) {
for (int i = 0; i < argNames.length; i++) {
if (argNames[i].equals(volunteerIdStrArr[0])) {
Object obj = args[i];
try {
Method method = obj.getClass().getDeclaredMethod(volunteerIdStrArr[1]);
volunteerId = String.valueOf(method.invoke(obj));
} catch (Exception e) {
throw new RuntimeException("记录用户积分注解中volunteerId反射失败");
}
}
}
}
//解析ruleCode
String ruleCodeExpression = ruleCodeKey.substring(2, ruleCodeKey.length() - 1);
String[] ruleCodeStrArr = ruleCodeExpression.split("\\.");
if (ruleCodeStrArr.length > 2 || ruleCodeStrArr.length == 0) {
throw new RuntimeException("记录用户积分注解中ruleCode格式不正确");
}
if (ruleCodeStrArr.length == 1) {
for (int i = 0; i < argNames.length; i++) {
if (argNames[i].equals(ruleCodeStrArr[0])) {
ruleCode = String.valueOf(args[i]);
}
}
} else if (ruleCodeStrArr.length == 2) {
for (int i = 0; i < argNames.length; i++) {
if (argNames[i].equals(ruleCodeStrArr[0])) {
Object obj = args[i];
try {
Method method = obj.getClass().getDeclaredMethod(ruleCodeStrArr[1]);
ruleCode = String.valueOf(method.invoke(obj));
} catch (Exception e) {
throw new RuntimeException("记录用户积分注解中ruleCode反射失败");
}
}
}
}
//解析userId
String userIdExpression = userIdKey.substring(2, userIdKey.length() - 1);
String[] userIdStrArr = userIdExpression.split("\\.");
if (userIdStrArr.length > 2 || userIdStrArr.length == 0) {
throw new RuntimeException("记录用户积分注解中userId格式不正确");
}
if (userIdStrArr.length == 1) {
for (int i = 0; i < argNames.length; i++) {
if (argNames[i].equals(userIdStrArr[0])) {
userId = String.valueOf(args[i]);
}
}
} else if (userIdStrArr.length == 2) {
for (int i = 0; i < argNames.length; i++) {
if (argNames[i].equals(userIdStrArr[0])) {
Object obj = args[i];
try {
Method method = obj.getClass().getDeclaredMethod(userIdStrArr[1]);
userId = String.valueOf(method.invoke(obj));
} catch (Exception e) {
throw new RuntimeException("记录用户积分注解中userId反射失败");
}
}
}
}
userPointsLogDTO.setVolunteerId(volunteerId);
userPointsLogDTO.setUserId(userId);
userPointsLogDTO.setRuleCode(ruleCode);
}
return userPointsLogDTO;
}
}

27
esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/logs/PointsLogsDao.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.elink.esua.epdc.modules.logs.dao.PointsLogsDao">
<resultMap type="com.elink.esua.epdc.modules.logs.entity.PointsLogsEntity" id="pointsLogsMap">
<result property="id" column="ID"/>
<result property="volunteerId" column="VOLUNTEER_ID"/>
<result property="userId" column="USER_ID"/>
<result property="operationType" column="OPERATION_TYPE"/>
<result property="points" column="POINTS"/>
<result property="operationDesc" column="OPERATION_DESC"/>
<result property="operationTime" column="OPERATION_TIME"/>
<result property="operationMode" column="OPERATION_MODE"/>
<result property="ruleCode" column="RULE_CODE"/>
<result property="status" column="STATUS"/>
<result property="failureReason" column="FAILURE_REASON"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

29
esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserPointsFormDTO.java

@ -0,0 +1,29 @@
package com.elink.esua.epdc.dto.epdc.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @Description 根据操作类型更新用户积分 入参DTO
* @Author yinzuomei
* @Date 2019/12/13 13:57
*/
@Data
public class EpdcUserPointsFormDTO {
/**
* 积分操作类型(加积分减积分)
*/
@NotBlank(message = "积分操作类型不能为空")
private String operationType;
/**
* 用户ID
*/
@NotBlank(message = "用户id不能为空")
private String userId;
@NotNull
private Integer points;
}

13
esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java

@ -27,6 +27,7 @@ import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.UserDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO;
import com.elink.esua.epdc.enums.AppUserStatesEnum;
import com.elink.esua.epdc.excel.UserExcel;
import com.elink.esua.epdc.service.UserService;
@ -34,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
@ -129,4 +131,15 @@ public class UserController {
ExcelUtils.exportExcelToTarget(response, fileName, list, UserExcel.class);
}
/**
* @param formDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @Author yinzuomei
* @Description 根据操作类型更新用户积分
* @Date 2019/12/13 15:01
**/
@PostMapping("handleUserPoints")
public Result handleUserPoints(@RequestBody @Valid EpdcUserPointsFormDTO formDTO) {
return userService.handleUserPoints(formDTO);
}
}

9
esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java

@ -258,4 +258,13 @@ public interface UserService extends BaseService<UserEntity> {
* @Date 2019/12/7 13:58
**/
Result<UserDTO> queryUserDto(EpdcAppQueryUserInfoFormDTO formDTO);
/**
* @param formDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @Author yinzuomei
* @Description 根据操作类型更新用户积分
* @Date 2019/12/13 15:10
**/
Result handleUserPoints(EpdcUserPointsFormDTO formDTO);
}

21
esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java

@ -26,6 +26,7 @@ import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.enums.UserSexEnum;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum;
import com.elink.esua.epdc.commons.tools.enums.pointsenum.PointsOperationEnum;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.redis.UserDetailRedis;
@ -757,6 +758,26 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
return new Result();
}
/**
* @param formDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @Author yinzuomei
* @Description 根据操作类型更新用户积分
* @Date 2019/12/13 15:02
**/
@Override
public Result handleUserPoints(EpdcUserPointsFormDTO formDTO) {
UserEntity userEntity = baseDao.selectById(formDTO.getUserId());
//规则操作类型(0-减积分,1-加积分)
if (PointsOperationEnum.OPERATION_TYPE_ADD.getOperationType().equals(formDTO.getOperationType())) {
userEntity.setPoints(userEntity.getPoints() + formDTO.getPoints());
} else if (PointsOperationEnum.OPERATION_TYPE_SUBSTRACT.getOperationType().equals(formDTO.getOperationType())) {
userEntity.setPoints(userEntity.getPoints() - formDTO.getPoints());
}
baseDao.updateById(userEntity);
return new Result();
}
/**
* 根据微信信息查询用户
*

Loading…
Cancel
Save