浏览代码

活动排课

zouxuan 3 年之前
父节点
当前提交
33643b6cbf

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

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

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ActivityPlanAddDto.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.ActivityPlan;
+
+public class ActivityPlanAddDto extends ActivityPlan {
+
+    private SalarySettlementDto salarySettlement;
+
+    public SalarySettlementDto getSalarySettlement() {
+        return salarySettlement;
+    }
+
+    public void setSalarySettlement(SalarySettlementDto salarySettlement) {
+        this.salarySettlement = salarySettlement;
+    }
+}

+ 52 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SalarySettlementDto.java

@@ -0,0 +1,52 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+public class SalarySettlementDto implements Serializable {
+
+    @ApiModelProperty("线上课收费标准")
+    private SalarySettlementTypeDto onlineSalarySettlement;
+
+    @ApiModelProperty("线下课收费标准")
+    private SalarySettlementTypeDto offlineSalarySettlement;
+
+    @ApiModelProperty("赠送线上课收费标准")
+    private SalarySettlementTypeDto giveOnlineSalarySettlement;
+
+    @ApiModelProperty("赠送线下课收费标准")
+    private SalarySettlementTypeDto giveOfflineSalarySettlement;
+
+    public SalarySettlementTypeDto getOnlineSalarySettlement() {
+        return onlineSalarySettlement;
+    }
+
+    public void setOnlineSalarySettlement(SalarySettlementTypeDto onlineSalarySettlement) {
+        this.onlineSalarySettlement = onlineSalarySettlement;
+    }
+
+    public SalarySettlementTypeDto getOfflineSalarySettlement() {
+        return offlineSalarySettlement;
+    }
+
+    public void setOfflineSalarySettlement(SalarySettlementTypeDto offlineSalarySettlement) {
+        this.offlineSalarySettlement = offlineSalarySettlement;
+    }
+
+    public SalarySettlementTypeDto getGiveOnlineSalarySettlement() {
+        return giveOnlineSalarySettlement;
+    }
+
+    public void setGiveOnlineSalarySettlement(SalarySettlementTypeDto giveOnlineSalarySettlement) {
+        this.giveOnlineSalarySettlement = giveOnlineSalarySettlement;
+    }
+
+    public SalarySettlementTypeDto getGiveOfflineSalarySettlement() {
+        return giveOfflineSalarySettlement;
+    }
+
+    public void setGiveOfflineSalarySettlement(SalarySettlementTypeDto giveOfflineSalarySettlement) {
+        this.giveOfflineSalarySettlement = giveOfflineSalarySettlement;
+    }
+}

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SalarySettlementTypeDto.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class SalarySettlementTypeDto {
+
+    @ApiModelProperty(value = "课程形式")
+    private TeachModeEnum teachMode;
+
+    @ApiModelProperty(value = "课酬结算方式")
+    private SalarySettlementTypeEnum salarySettlementType;
+
+    @ApiModelProperty(value = "课酬结算参数值")
+    private BigDecimal settlementValue;
+
+    public TeachModeEnum getTeachMode() {
+        return teachMode;
+    }
+
+    public void setTeachMode(TeachModeEnum teachMode) {
+        this.teachMode = teachMode;
+    }
+
+    public SalarySettlementTypeEnum getSalarySettlementType() {
+        return salarySettlementType;
+    }
+
+    public void setSalarySettlementType(SalarySettlementTypeEnum salarySettlementType) {
+        this.salarySettlementType = salarySettlementType;
+    }
+
+    public BigDecimal getSettlementValue() {
+        return settlementValue;
+    }
+
+    public void setSettlementValue(BigDecimal settlementValue) {
+        this.settlementValue = settlementValue;
+    }
+}

+ 331 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityPlan.java

@@ -0,0 +1,331 @@
+package com.ym.mec.biz.dal.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 对应数据库表(activity_plan):
+ */
+public class ActivityPlan {
+
+	@ApiModelProperty(value = "活动编号")
+	private Integer id;
+
+	@ApiModelProperty(value = "适用分部")
+	private String organId;
+
+	@ApiModelProperty(value = "活动名称")
+	private String name;
+
+	@ApiModelProperty(value = "活动描述")
+	private String description;
+
+	@ApiModelProperty(value = "活动类型,课程或者会员")
+	private String type;
+
+	@ApiModelProperty(value = "活动开始时间")
+	private java.util.Date startTime;
+
+	@ApiModelProperty(value = "活动结束时间")
+	private java.util.Date endTime;
+
+	@ApiModelProperty(value = "可排课开始时间")
+	private java.util.Date coursesStartTime;
+
+	@ApiModelProperty(value = "可排课截至时间")
+	private java.util.Date coursesEndTime;
+
+	@ApiModelProperty(value = "适用学生类型:-1:所有;0:老用户;1:新用户,2会员,3非会员")
+	private Integer applyToStudentType = -1;
+
+	@ApiModelProperty(value = "可购买次数:-1:不限制")
+	private Integer maxBuyNum = -1;
+
+	@ApiModelProperty(value = "排课方式0课程余额1排课次数")
+	private Integer courseArrangingType = 0;
+
+	@ApiModelProperty(value = "课程类型VIP,PRACTICE")
+	private String courseType = "VIP";
+
+	@ApiModelProperty(value = "课程形式")
+	private Integer categoryId;
+
+	@ApiModelProperty(value = "单节课时长")
+	private Integer singleCourseTime;
+
+	@ApiModelProperty(value = "最少课程数量")
+	private Integer minCourseNum;
+
+	@ApiModelProperty(value = "最多可排课数量")
+	private Integer maxCourseNum;
+
+	@ApiModelProperty(value = "折扣")
+	private BigDecimal discount = new BigDecimal(100);
+
+	@ApiModelProperty(value = "满赠达标课时:-1:没有满减")
+	private Integer fullMinusCourseTimes = -1;
+
+	@ApiModelProperty(value = "赠课类型")
+	private String giveCourseType;
+
+	@ApiModelProperty(value = "赠课形式")
+	private Integer giveCategoryId;
+
+	@ApiModelProperty(value = "赠课数量")
+	private Integer giveCourseNum = 0;
+
+	@ApiModelProperty(value = "会员编号")
+	private Integer memberRankId;
+
+	@ApiModelProperty(value = "会员时长")
+	private Integer memberTime;
+
+	@ApiModelProperty(value = "结算标准")
+	private String salarySettlementJson;
+
+	@ApiModelProperty(value = "是否删除")
+	private Boolean delFlag = false;
+
+	@ApiModelProperty(value = "是否可用")
+	private Boolean enable = false;
+
+	@ApiModelProperty(value = "创建时间")
+	private java.util.Date createTime;
+
+	@ApiModelProperty(value = "更新时间")
+	private java.util.Date updateTime;
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public String getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(String organId) {
+		this.organId = organId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public Date getStartTime() {
+		return startTime;
+	}
+
+	public void setStartTime(Date startTime) {
+		this.startTime = startTime;
+	}
+
+	public Date getEndTime() {
+		return endTime;
+	}
+
+	public void setEndTime(Date endTime) {
+		this.endTime = endTime;
+	}
+
+	public Date getCoursesStartTime() {
+		return coursesStartTime;
+	}
+
+	public void setCoursesStartTime(Date coursesStartTime) {
+		this.coursesStartTime = coursesStartTime;
+	}
+
+	public Date getCoursesEndTime() {
+		return coursesEndTime;
+	}
+
+	public void setCoursesEndTime(Date coursesEndTime) {
+		this.coursesEndTime = coursesEndTime;
+	}
+
+	public Integer getApplyToStudentType() {
+		return applyToStudentType;
+	}
+
+	public void setApplyToStudentType(Integer applyToStudentType) {
+		this.applyToStudentType = applyToStudentType;
+	}
+
+	public Integer getMaxBuyNum() {
+		return maxBuyNum;
+	}
+
+	public void setMaxBuyNum(Integer maxBuyNum) {
+		this.maxBuyNum = maxBuyNum;
+	}
+
+	public Integer getCourseArrangingType() {
+		return courseArrangingType;
+	}
+
+	public void setCourseArrangingType(Integer courseArrangingType) {
+		this.courseArrangingType = courseArrangingType;
+	}
+
+	public String getCourseType() {
+		return courseType;
+	}
+
+	public void setCourseType(String courseType) {
+		this.courseType = courseType;
+	}
+
+	public Integer getCategoryId() {
+		return categoryId;
+	}
+
+	public void setCategoryId(Integer categoryId) {
+		this.categoryId = categoryId;
+	}
+
+	public Integer getSingleCourseTime() {
+		return singleCourseTime;
+	}
+
+	public void setSingleCourseTime(Integer singleCourseTime) {
+		this.singleCourseTime = singleCourseTime;
+	}
+
+	public Integer getMinCourseNum() {
+		return minCourseNum;
+	}
+
+	public void setMinCourseNum(Integer minCourseNum) {
+		this.minCourseNum = minCourseNum;
+	}
+
+	public Integer getMaxCourseNum() {
+		return maxCourseNum;
+	}
+
+	public void setMaxCourseNum(Integer maxCourseNum) {
+		this.maxCourseNum = maxCourseNum;
+	}
+
+	public BigDecimal getDiscount() {
+		return discount;
+	}
+
+	public void setDiscount(BigDecimal discount) {
+		this.discount = discount;
+	}
+
+	public Integer getFullMinusCourseTimes() {
+		return fullMinusCourseTimes;
+	}
+
+	public void setFullMinusCourseTimes(Integer fullMinusCourseTimes) {
+		this.fullMinusCourseTimes = fullMinusCourseTimes;
+	}
+
+	public String getGiveCourseType() {
+		return giveCourseType;
+	}
+
+	public void setGiveCourseType(String giveCourseType) {
+		this.giveCourseType = giveCourseType;
+	}
+
+	public Integer getGiveCategoryId() {
+		return giveCategoryId;
+	}
+
+	public void setGiveCategoryId(Integer giveCategoryId) {
+		this.giveCategoryId = giveCategoryId;
+	}
+
+	public Integer getGiveCourseNum() {
+		return giveCourseNum;
+	}
+
+	public void setGiveCourseNum(Integer giveCourseNum) {
+		this.giveCourseNum = giveCourseNum;
+	}
+
+	public Integer getMemberRankId() {
+		return memberRankId;
+	}
+
+	public void setMemberRankId(Integer memberRankId) {
+		this.memberRankId = memberRankId;
+	}
+
+	public Integer getMemberTime() {
+		return memberTime;
+	}
+
+	public void setMemberTime(Integer memberTime) {
+		this.memberTime = memberTime;
+	}
+
+	public String getSalarySettlementJson() {
+		return salarySettlementJson;
+	}
+
+	public void setSalarySettlementJson(String salarySettlementJson) {
+		this.salarySettlementJson = salarySettlementJson;
+	}
+
+	public Boolean getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(Boolean delFlag) {
+		this.delFlag = delFlag;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+}

+ 42 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ActivityPlanQueryInfo.java

@@ -0,0 +1,42 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author zx
+* @date 2021/9/26 15:52
+*/
+public class ActivityPlanQueryInfo extends QueryInfo {
+
+    private String organId;
+
+    private Boolean enable;
+
+    @ApiModelProperty(value = "适用学生类型:-1:所有;0:老用户;1:新用户")
+    private Integer  applyToStudentType;
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public Integer getApplyToStudentType() {
+        return applyToStudentType;
+    }
+
+    public void setApplyToStudentType(Integer applyToStudentType) {
+        this.applyToStudentType = applyToStudentType;
+    }
+}

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ActivityPlanService.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dto.ActivityPlanAddDto;
+import com.ym.mec.biz.dal.entity.ActivityPlan;
+import com.ym.mec.common.service.BaseService;
+
+public interface ActivityPlanService extends BaseService<Integer, ActivityPlan> {
+
+    /**
+    * @description:
+     * @param activityPlanAddDto
+    * @author zx
+    * @date 2021/9/26 15:09
+    */
+    void addActivityPlan(ActivityPlanAddDto activityPlanAddDto);
+
+    /**
+    * @description:
+     * @param activityPlanAddDto
+    * @return void
+    * @author zx
+    * @date 2021/9/26 15:25
+    */
+    void updateActivityPlan(ActivityPlanAddDto activityPlanAddDto);
+}

+ 186 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityPlanServiceImpl.java

@@ -0,0 +1,186 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.ActivityPlanDao;
+import com.ym.mec.biz.dal.dto.ActivityPlanAddDto;
+import com.ym.mec.biz.dal.dto.SalarySettlementDto;
+import com.ym.mec.biz.dal.dto.SalarySettlementTypeDto;
+import com.ym.mec.biz.dal.entity.ActivityPlan;
+import com.ym.mec.biz.dal.entity.VipGroupActivity;
+import com.ym.mec.biz.event.source.EntityChangeEventSource;
+import com.ym.mec.biz.service.ActivityPlanService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Objects;
+
+import static com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum.RATIO_DISCOUNT;
+import static com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum.TEACHER_DEFAULT;
+
+@Service
+public class ActivityPlanServiceImpl extends BaseServiceImpl<Integer, ActivityPlan>  implements ActivityPlanService {
+	
+	@Autowired
+	private ActivityPlanDao activityPlanDao;
+//	@Autowired
+//	private SysUserFeignService sysUserFeignService;
+
+	@Override
+	public BaseDAO<Integer, ActivityPlan> getDAO() {
+		return activityPlanDao;
+	}
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void addActivityPlan(ActivityPlanAddDto activityPlanAddDto) {
+		if(Objects.isNull(activityPlanAddDto.getOrganId())){
+			throw new BizException("请指定分部!");
+		}
+		SalarySettlementDto salarySettlement = activityPlanAddDto.getSalarySettlement();
+		SalarySettlementTypeDto onlineSalarySettlement = salarySettlement.getOnlineSalarySettlement();
+		if(Objects.nonNull(onlineSalarySettlement)){
+			switch (onlineSalarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					break;
+				case FIXED_SALARY:
+					if(Objects.isNull(onlineSalarySettlement.getSettlementValue())){
+						throw new BizException("请指定线下课固定课酬");
+					}
+					break;
+				default:
+					throw new BizException("错误的课酬结算标准!");
+			}
+		}
+		SalarySettlementTypeDto offlineSalarySettlement = salarySettlement.getOfflineSalarySettlement();
+		if(Objects.nonNull(offlineSalarySettlement)){
+			switch (offlineSalarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					break;
+				case FIXED_SALARY:
+					if(Objects.isNull(offlineSalarySettlement.getSettlementValue())){
+						throw new BizException("请指定线上课固定课酬");
+					}
+					break;
+				default:
+					throw new BizException("错误的课酬结算标准!");
+			}
+		}
+		SalarySettlementTypeDto giveOnlineSalarySettlement = salarySettlement.getGiveOnlineSalarySettlement();
+		if(Objects.nonNull(giveOnlineSalarySettlement)){
+			switch (giveOnlineSalarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					break;
+				case FIXED_SALARY:
+					if(Objects.isNull(giveOnlineSalarySettlement.getSettlementValue())){
+						throw new BizException("请指定赠送线下课固定课酬");
+					}
+					break;
+				default:
+					throw new BizException("错误的课酬结算标准!");
+			}
+		}
+		SalarySettlementTypeDto giveOfflineSalarySettlement = salarySettlement.getGiveOfflineSalarySettlement();
+		if(Objects.nonNull(giveOfflineSalarySettlement)){
+			switch (giveOfflineSalarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					break;
+				case FIXED_SALARY:
+					if(Objects.isNull(giveOfflineSalarySettlement.getSettlementValue())){
+						throw new BizException("请指定赠送线上课固定课酬");
+					}
+					break;
+				default:
+					throw new BizException("错误的课酬结算标准!");
+			}
+		}
+
+		activityPlanAddDto.setSalarySettlementJson(JSON.toJSONString(salarySettlement));
+		super.insert(activityPlanAddDto);
+    }
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateActivityPlan(ActivityPlanAddDto activityPlanAddDto) {
+//		SysUser sysUser = sysUserFeignService.queryUserInfo();
+//		if(sysUser == null){
+//			throw new BizException("用户信息获取失败");
+//		}
+		ActivityPlan oldActivityPlan = activityPlanDao.get(activityPlanAddDto.getId());
+		if(Objects.isNull(oldActivityPlan)){
+			throw new BizException("活动不存在!");
+		}
+		if(Objects.isNull(activityPlanAddDto.getOrganId())){
+			throw new BizException("请指定分部!");
+		}
+		SalarySettlementDto salarySettlement = activityPlanAddDto.getSalarySettlement();
+		SalarySettlementTypeDto onlineSalarySettlement = salarySettlement.getOnlineSalarySettlement();
+		if(Objects.nonNull(onlineSalarySettlement)){
+			switch (onlineSalarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					onlineSalarySettlement.setSettlementValue(null);
+					break;
+				case FIXED_SALARY:
+					if(Objects.isNull(onlineSalarySettlement.getSettlementValue())){
+						throw new BizException("请指定线下课固定课酬");
+					}
+					break;
+				default:
+					throw new BizException("错误的课酬结算标准!");
+			}
+		}
+
+		SalarySettlementTypeDto offlineSalarySettlement = salarySettlement.getOfflineSalarySettlement();
+		if(Objects.nonNull(offlineSalarySettlement)){
+			switch (offlineSalarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					break;
+				case FIXED_SALARY:
+					if(Objects.isNull(offlineSalarySettlement.getSettlementValue())){
+						throw new BizException("请指定线上课固定课酬");
+					}
+					break;
+				default:
+					throw new BizException("错误的课酬结算标准!");
+			}
+		}
+		SalarySettlementTypeDto giveOnlineSalarySettlement = salarySettlement.getGiveOnlineSalarySettlement();
+		if(Objects.nonNull(giveOnlineSalarySettlement)){
+			switch (giveOnlineSalarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					break;
+				case FIXED_SALARY:
+					if(Objects.isNull(giveOnlineSalarySettlement.getSettlementValue())){
+						throw new BizException("请指定赠送线下课固定课酬");
+					}
+					break;
+				default:
+					throw new BizException("错误的课酬结算标准!");
+			}
+		}
+		SalarySettlementTypeDto giveOfflineSalarySettlement = salarySettlement.getGiveOfflineSalarySettlement();
+		if(Objects.nonNull(giveOfflineSalarySettlement)){
+			switch (giveOfflineSalarySettlement.getSalarySettlementType()){
+				case TEACHER_DEFAULT:
+					break;
+				case FIXED_SALARY:
+					if(Objects.isNull(giveOfflineSalarySettlement.getSettlementValue())){
+						throw new BizException("请指定赠送线上课固定课酬");
+					}
+					break;
+				default:
+					throw new BizException("错误的课酬结算标准!");
+			}
+		}
+
+		activityPlanAddDto.setSalarySettlementJson(JSON.toJSONString(salarySettlement));
+
+		super.update(activityPlanAddDto);
+//		entityChangeEventSource.entityChange(oldActivityPlan, activityPlanAddDto, sysUser.getId());
+	}
+}

+ 172 - 0
mec-biz/src/main/resources/config/mybatis/ActivityPlanMapper.xml

@@ -0,0 +1,172 @@
+<?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.ActivityPlanDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ActivityPlan" id="ActivityPlan">
+		<result column="id_" property="id" />
+		<result column="organ_id_" property="organId" />
+		<result column="name_" property="name" />
+		<result column="description_" property="description" />
+		<result column="type_" property="type" />
+		<result column="start_time_" property="startTime" />
+		<result column="end_time_" property="endTime" />
+		<result column="courses_start_time_" property="coursesStartTime" />
+		<result column="courses_end_time_" property="coursesEndTime" />
+		<result column="apply_to_student_type_" property="applyToStudentType" />
+		<result column="max_buy_num_" property="maxBuyNum" />
+		<result column="course_arranging_type_" property="courseArrangingType" />
+		<result column="course_type_" property="courseType" />
+		<result column="category_id_" property="categoryId" />
+		<result column="single_course_time_" property="singleCourseTime" />
+		<result column="min_course_num_" property="minCourseNum" />
+		<result column="max_course_num_" property="maxCourseNum" />
+		<result column="discount_" property="discount" />
+		<result column="full_minus_course_times_" property="fullMinusCourseTimes" />
+		<result column="give_course_type_" property="giveCourseType" />
+		<result column="give_category_id_" property="giveCategoryId" />
+		<result column="give_course_num_" property="giveCourseNum" />
+		<result column="member_rank_id_" property="memberRankId" />
+		<result column="member_time_" property="memberTime" />
+		<result column="salary_settlement_json_" property="salarySettlementJson" />
+		<result column="del_flag_" property="delFlag" />
+		<result column="enable_" property="enable" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ActivityPlan" >
+		SELECT * FROM activity_plan WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ActivityPlan">
+		SELECT * FROM activity_plan ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ActivityPlan" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO activity_plan (organ_id_,name_,description_,type_,start_time_,end_time_,courses_start_time_,
+					   courses_end_time_,apply_to_student_type_,max_buy_num_,course_arranging_type_,
+					   course_type_,category_id_,single_course_time_,min_course_num_,max_course_num_,
+					   discount_,full_minus_course_times_,give_course_type_,give_category_id_,give_course_num_,
+					   member_rank_id_,member_time_,salary_settlement_json_,del_flag_,enable_,create_time_,update_time_)
+					   VALUES(#{organId},#{name},#{description},#{type},#{startTime},#{endTime},#{coursesStartTime},
+							  #{coursesEndTime},#{applyToStudentType},#{maxBuyNum},#{courseArrangingType},#{courseType},
+							  #{categoryId},#{singleCourseTime},#{minCourseNum},#{maxCourseNum},#{discount},
+							  #{fullMinusCourseTimes},#{giveCourseType},#{giveCategoryId},#{giveCourseNum},
+							  #{memberRankId},#{memberTime},#{salarySettlementJson},#{delFlag},#{enable},#{createTime},#{updateTime})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ActivityPlan">
+		UPDATE activity_plan <set>
+		<if test="memberRankId != null">
+		member_rank_id_ = #{memberRankId},
+		</if>
+		<if test="coursesEndTime != null">
+		courses_end_time_ = #{coursesEndTime},
+		</if>
+		<if test="giveCategoryId != null">
+		give_category_id_ = #{giveCategoryId},
+		</if>
+		<if test="name != null">
+		name_ = #{name},
+		</if>
+		<if test="categoryId != null">
+		category_id_ = #{categoryId},
+		</if>
+		<if test="updateTime != null">
+		update_time_ = #{updateTime},
+		</if>
+		<if test="description != null">
+		description_ = #{description},
+		</if>
+		<if test="courseType != null">
+		course_type_ = #{courseType},
+		</if>
+		<if test="giveCourseNum != null">
+		give_course_num_ = #{giveCourseNum},
+		</if>
+		<if test="coursesStartTime != null">
+		courses_start_time_ = #{coursesStartTime},
+		</if>
+		<if test="maxBuyNum != null">
+		max_buy_num_ = #{maxBuyNum},
+		</if>
+		<if test="delFlag != null">
+		del_flag_ = #{delFlag},
+		</if>
+		<if test="organId != null">
+		organ_id_ = #{organId},
+		</if>
+		<if test="id != null">
+		id_ = #{id},
+		</if>
+		<if test="giveCourseType != null">
+		give_course_type_ = #{giveCourseType},
+		</if>
+		<if test="applyToStudentType != null">
+		apply_to_student_type_ = #{applyToStudentType},
+		</if>
+		<if test="endTime != null">
+		end_time_ = #{endTime},
+		</if>
+		<if test="fullMinusCourseTimes != null">
+		full_minus_course_times_ = #{fullMinusCourseTimes},
+		</if>
+		<if test="memberTime != null">
+		member_time_ = #{memberTime},
+		</if>
+		<if test="startTime != null">
+		start_time_ = #{startTime},
+		</if>
+		<if test="createTime != null">
+		create_time_ = #{createTime},
+		</if>
+		<if test="courseArrangingType != null">
+		course_arranging_type_ = #{courseArrangingType},
+		</if>
+		<if test="enable != null">
+		enable_ = #{enable},
+		</if>
+		<if test="singleCourseTime != null">
+		single_course_time_ = #{singleCourseTime},
+		</if>
+		<if test="maxCourseNum != null">
+		max_course_num_ = #{maxCourseNum},
+		</if>
+		<if test="minCourseNum != null">
+		min_course_num_ = #{minCourseNum},
+		</if>
+		<if test="discount != null">
+		discount_ = #{discount},
+		</if>
+		<if test="salarySettlementJson != null">
+		salary_settlement_json_ = #{salarySettlementJson},
+		</if>
+		<if test="type != null">
+		type_ = #{type},
+		</if>
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM activity_plan WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="ActivityPlan" parameterType="map">
+		SELECT * FROM activity_plan ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM activity_plan
+	</select>
+</mapper>

+ 82 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ActivityPlanController.java

@@ -0,0 +1,82 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.ActivityPlanAddDto;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.page.ActivityPlanQueryInfo;
+import com.ym.mec.biz.service.ActivityPlanService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+
+@Api(tags = "活动方案")
+@RequestMapping("activityPlan")
+@RestController
+public class ActivityPlanController extends BaseController {
+
+    @Autowired
+    private ActivityPlanService activityPlanService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private EmployeeDao employeeDao;
+
+    @ApiOperation(value = "新增活动方案")
+    @PostMapping("/addVipGroupActivity")
+    @PreAuthorize("@pcs.hasPermissions('activityPlan/addActivityPlan')")
+    public Object addActivityPlan(@RequestBody ActivityPlanAddDto activityPlanAddDto){
+        activityPlanService.addActivityPlan(activityPlanAddDto);
+        return succeed();
+    }
+
+    @ApiOperation(value = "修改活动方案")
+    @PostMapping("/updateActivityPlan")
+    @PreAuthorize("@pcs.hasPermissions('activityPlan/updateActivityPlan')")
+    public Object updateActivityPlan(@RequestBody ActivityPlanAddDto activityPlanAddDto){
+        activityPlanService.updateActivityPlan(activityPlanAddDto);
+        return succeed();
+    }
+
+    @ApiOperation(value = "分页查询活动方案")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('activityPlan/queryPage')")
+    public Object queryPage(ActivityPlanQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("用户信息获取失败");
+        }
+        Employee employee = employeeDao.get(sysUser.getId());
+        if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+            return failed("用户所在分部异常");
+        }else {
+            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+            if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                return failed("非法请求");
+            }
+        }
+        return succeed(activityPlanService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "删除活动方案")
+    @PostMapping("/delete")
+    @PreAuthorize("@pcs.hasPermissions('activityPlan/delete')")
+    public Object delete(Integer id){
+        if(Objects.isNull(id)){
+            throw new BizException("请指定活动编号!");
+        }
+        activityPlanService.delete(id);
+        return succeed();
+    }
+}