Joburgess 4 years ago
parent
commit
60637d510d

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DataChangeLogDao.java

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.DataChangeLog;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface DataChangeLogDao extends BaseDAO<Long, DataChangeLog> {
+
+	
+}

+ 70 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/DataChangeLog.java

@@ -0,0 +1,70 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(data_change_log):
+ */
+public class DataChangeLog {
+
+	/**  */
+	private Long id;
+	
+	/** 操作人编号 */
+	private Integer operatorId;
+	
+	/** 变更信息 */
+	private String changeInfo;
+	
+	/** 操作时间 */
+	private java.util.Date createTime;
+	
+	/** 类型名称 */
+	private String className;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setOperatorId(Integer operatorId){
+		this.operatorId = operatorId;
+	}
+	
+	public Integer getOperatorId(){
+		return this.operatorId;
+	}
+			
+	public void setChangeInfo(String changeInfo){
+		this.changeInfo = changeInfo;
+	}
+	
+	public String getChangeInfo(){
+		return this.changeInfo;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setClassName(String className){
+		this.className = className;
+	}
+	
+	public String getClassName(){
+		return this.className;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/event/EntityChangeEvent.java

@@ -8,13 +8,17 @@ import org.springframework.context.ApplicationEvent;
  */
 public class EntityChangeEvent extends ApplicationEvent {
 
+    private Integer operatorId;
+
     private Object oldEntity;
+
     private Object newEntity;
 
-    public EntityChangeEvent(Object source, Object oldEntity, Object newEntity) {
+    public EntityChangeEvent(Object source, Object oldEntity, Object newEntity, Integer operatorId) {
         super(source);
         this.oldEntity = oldEntity;
         this.newEntity = newEntity;
+        this.operatorId = operatorId;
     }
 
     public Object getOldEntity() {
@@ -24,4 +28,8 @@ public class EntityChangeEvent extends ApplicationEvent {
     public Object getNewEntity() {
         return newEntity;
     }
+
+    public Integer getOperatorId() {
+        return operatorId;
+    }
 }

+ 1 - 5
mec-biz/src/main/java/com/ym/mec/biz/event/listener/EntityChangeListener.java

@@ -1,11 +1,7 @@
 package com.ym.mec.biz.event.listener;
 
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.event.EntityChangeEvent;
-import com.ym.mec.biz.event.StudentCourseChangeEvent;
 import com.ym.mec.biz.service.LogService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.event.EventListener;
 import org.springframework.scheduling.annotation.Async;
@@ -24,7 +20,7 @@ public class EntityChangeListener {
     @Async
     @EventListener
     public void onEntityChangedEvent(EntityChangeEvent entityChangeEvent) {
-        logService.entityVariationAnalysis(entityChangeEvent.getOldEntity(), entityChangeEvent.getNewEntity());
+        logService.entityVariationAnalysis(entityChangeEvent.getOldEntity(), entityChangeEvent.getNewEntity(), entityChangeEvent.getOperatorId());
     }
 
 }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/event/source/EntityChangeEventSource.java

@@ -27,7 +27,7 @@ public class EntityChangeEventSource {
      * @date 2020.09.24
      * @return void
      */
-    public void entityChange(Object oldEntity, Object newEntity) {
-        applicationContext.publishEvent(new EntityChangeEvent(this, oldEntity, newEntity));
+    public void entityChange(Object oldEntity, Object newEntity, Integer operatorId) {
+        applicationContext.publishEvent(new EntityChangeEvent(this, oldEntity, newEntity, operatorId));
     }
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/DataChangeLogService.java

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.DataChangeLog;
+import com.ym.mec.common.service.BaseService;
+
+public interface DataChangeLogService extends BaseService<Long, DataChangeLog> {
+
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/LogService.java

@@ -14,6 +14,6 @@ public interface LogService {
      * @param newEntity:
      * @return void
      */
-    void entityVariationAnalysis(Object oldEntity, Object newEntity);
+    void entityVariationAnalysis(Object oldEntity, Object newEntity, Integer operatorId);
 
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java

@@ -20,7 +20,7 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
      * @Date: 2019/10/1
      * 修改vip课活动方案
      */
-    void updateVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto);
+    void updateVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto, Integer operatorId);
 
     /**
      * @Author: Joburgess

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DataChangeLogServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ym.mec.biz.dal.entity.DataChangeLog;
+import com.ym.mec.biz.service.DataChangeLogService;
+import com.ym.mec.biz.dal.dao.DataChangeLogDao;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DataChangeLogServiceImpl extends BaseServiceImpl<Long, DataChangeLog> implements DataChangeLogService {
+	
+	@Autowired
+	private DataChangeLogDao dataChangeLogDao;
+
+	@Override
+	public BaseDAO<Long, DataChangeLog> getDAO() {
+		return dataChangeLogDao;
+	}
+	
+}

+ 19 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LogServiceImpl.java

@@ -1,13 +1,17 @@
 package com.ym.mec.biz.service.impl;
 
-import com.alibaba.druid.sql.visitor.functions.Char;
+import com.ym.mec.biz.dal.dao.DataChangeLogDao;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
+import com.ym.mec.biz.dal.entity.DataChangeLog;
 import com.ym.mec.biz.dal.enums.VipGroupActivityTypeEnum;
+import com.ym.mec.biz.service.DataChangeLogService;
 import com.ym.mec.biz.service.LogService;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.lang.reflect.Field;
 import java.util.*;
@@ -19,10 +23,8 @@ import java.util.*;
 @Service
 public class LogServiceImpl implements LogService {
 
-    private static Set<Class<?>> FINAL_CLASS = new HashSet<>(Arrays.asList(int.class,Integer.class,long.class,Long.class,
-            float.class,Float.class,double.class,Double.class,
-            char.class, Char.class,boolean.class, Boolean.class,
-            byte.class,Byte.class,short.class, Short.class, Enum.class));
+    @Autowired
+    private DataChangeLogDao dataChangeLogDao;
 
     private Field[] getAllFields(Object object){
         Class clazz = object.getClass();
@@ -37,10 +39,13 @@ public class LogServiceImpl implements LogService {
     }
 
     @Override
-    public void entityVariationAnalysis(Object oldEntity, Object newEntity) {
+    public void entityVariationAnalysis(Object oldEntity, Object newEntity, Integer operatorId) {
         List<String> changes = new ArrayList<>();
         Field[] allFields = getAllFields(oldEntity);
         for (Field field : allFields) {
+            if(field.getName().equals("createTime")||field.getName().equals("updateTime")){
+                continue;
+            }
             ApiModelProperty annotation = field.getAnnotation(ApiModelProperty.class);
             if(Objects.isNull(annotation)){
                 continue;
@@ -66,23 +71,13 @@ public class LogServiceImpl implements LogService {
                 e.printStackTrace();
             }
         }
-        System.out.println(StringUtils.join(changes, ";"));
-    }
-
-    public static void main(String[] args) {
-        VipGroupActivityAddDto vipGroupActivityAddDto = new VipGroupActivityAddDto();
-        vipGroupActivityAddDto.setId(1);
-        vipGroupActivityAddDto.setStartTime(DateUtil.stringToDate("2020-12-01", "yyyy-MM-dd"));
-        vipGroupActivityAddDto.setType(VipGroupActivityTypeEnum.BASE_ACTIVITY);
-        vipGroupActivityAddDto.setSalarySettlementJson("默认课酬");
-
-        VipGroupActivityAddDto vipGroupActivityAddDto1 = new VipGroupActivityAddDto();
-        vipGroupActivityAddDto1.setId(1);
-        vipGroupActivityAddDto1.setStartTime(DateUtil.stringToDate("2020-12-11", "yyyy-MM-dd"));
-        vipGroupActivityAddDto1.setType(VipGroupActivityTypeEnum.DISCOUNT);
-        vipGroupActivityAddDto1.setSalarySettlementJson("固定课酬");
-
-        LogServiceImpl logService = new LogServiceImpl();
-        logService.entityVariationAnalysis(vipGroupActivityAddDto, vipGroupActivityAddDto1);
+        if(CollectionUtils.isEmpty(changes)){
+            return;
+        }
+        DataChangeLog dataChangeLog = new DataChangeLog();
+        dataChangeLog.setClassName(oldEntity.getClass().getName());
+        dataChangeLog.setChangeInfo(StringUtils.join(changes, ";"));
+        dataChangeLog.setOperatorId(operatorId);
+        dataChangeLogDao.insert(dataChangeLog);
     }
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1431,7 +1431,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     public BigDecimal updateUserSurplusCourseFee(Integer userId, String musicGroupId, BigDecimal amount, String memo, Integer operatorId) {
         StudentRegistration studentRegistration = studentRegistrationDao.lockWithUserAndMusic(userId, musicGroupId);
         if (Objects.isNull(studentRegistration)) {
-            throw new BizException("学员注册信息不存在");
+            LOGGER.error("学员可用排课余额更新失败{}:学员注册信息不存在", amount);
+            return BigDecimal.ZERO;
         }
 
         if (BigDecimal.ZERO.compareTo(amount) > 0 && amount.abs().compareTo(studentRegistration.getSurplusCourseFee()) > 0) {

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
+import com.ym.mec.biz.event.source.EntityChangeEventSource;
 import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -26,6 +27,8 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	private VipGroupActivityDao vipGroupActivityDao;
 	@Autowired
 	private TeacherDao teacherDao;
+	@Autowired
+	private EntityChangeEventSource entityChangeEventSource;
 
 	@Override
 	public BaseDAO<Integer, VipGroupActivity> getDAO() {
@@ -83,7 +86,7 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	}
 
 	@Override
-	public void updateVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto) {
+	public void updateVipGroupActivity(VipGroupActivityAddDto vipGroupActivityAddDto, Integer operatorId) {
 		VipGroupActivity oldVipGroupActivity = vipGroupActivityDao.get(vipGroupActivityAddDto.getId());
 		if(Objects.isNull(oldVipGroupActivity)){
 			throw new BizException("活动不存在!");
@@ -94,6 +97,7 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 		vipGroupActivityAddDto.setSalarySettlementJson(JSON.toJSONString(vipGroupActivityAddDto.getVipGroupSalarySettlement()));
 
 		super.update(vipGroupActivityAddDto);
+		entityChangeEventSource.entityChange(oldVipGroupActivity, vipGroupActivityAddDto, operatorId);
 	}
 
 	@Override

+ 66 - 0
mec-biz/src/main/resources/config/mybatis/DataChangeLogMapper.xml

@@ -0,0 +1,66 @@
+<?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.ym.mec.biz.dal.dao.DataChangeLogDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.DataChangeLog" id="DataChangeLog">
+		<result column="id_" property="id" />
+		<result column="operator_id_" property="operatorId" />
+		<result column="change_info_" property="changeInfo" />
+		<result column="create_time_" property="createTime" />
+		<result column="class_name_" property="className" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="DataChangeLog" >
+		SELECT * FROM data_change_log WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="DataChangeLog">
+		SELECT * FROM data_change_log ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.DataChangeLog" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO data_change_log (id_,operator_id_,change_info_,create_time_,class_name_)
+		VALUES(#{id},#{operatorId},#{changeInfo},NOW(),#{className})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.DataChangeLog">
+		UPDATE data_change_log
+		<set>
+			<if test="operatorId != null">
+				operator_id_ = #{operatorId},
+			</if>
+			<if test="id != null">
+				id_ = #{id},
+			</if>
+			<if test="className != null">
+				class_name_ = #{className},
+			</if>
+			<if test="changeInfo != null">
+				change_info_ = #{changeInfo},
+			</if>
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM data_change_log WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="DataChangeLog" parameterType="map">
+		SELECT * FROM data_change_log ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM data_change_log
+	</select>
+</mapper>

+ 5 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/VipGroupActivityController.java

@@ -51,7 +51,11 @@ public class VipGroupActivityController extends BaseController {
     @ApiOperation(value = "修改活动方案")
     @PostMapping("/update")
     public Object update(@RequestBody VipGroupActivityAddDto vipGroupActivityAddDto){
-        vipGroupActivityService.updateVipGroupActivity(vipGroupActivityAddDto);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("用户信息获取失败");
+        }
+        vipGroupActivityService.updateVipGroupActivity(vipGroupActivityAddDto, sysUser.getId());
         return succeed();
     }
 

+ 5 - 1
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

@@ -75,7 +75,11 @@ public class VipGroupActivityController extends BaseController {
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/update')")
     public Object update(@RequestBody VipGroupActivityAddDto vipGroupActivityAddDto){
-        vipGroupActivityService.updateVipGroupActivity(vipGroupActivityAddDto);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("用户信息获取失败");
+        }
+        vipGroupActivityService.updateVipGroupActivity(vipGroupActivityAddDto, sysUser.getId());
         return succeed();
     }