Pārlūkot izejas kodu

Merge branch 'dev_1_3_2_20220815' of http://git.dayaedu.com/yonge/cooleshow into dev_1_3_2_20220815

liujunchi 2 gadi atpakaļ
vecāks
revīzija
842ee1b8c7
45 mainītis faili ar 1632 papildinājumiem un 259 dzēšanām
  1. 2 1
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ActivityTypeEnum.java
  2. 2 1
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/CacheNameEnum.java
  3. 40 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ConditionEnum.java
  4. 35 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ConditionMethodEnum.java
  5. 36 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/RewardTypeEnum.java
  6. 38 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/UnitEnum.java
  7. 53 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityPlanController.java
  8. 88 30
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityRewardController.java
  9. 1 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanDao.java
  10. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanEvaluationDao.java
  11. 37 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanRewardDao.java
  12. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanStandardDao.java
  13. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityRewardChangeStockDao.java
  14. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityRewardDao.java
  15. 22 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ActivityPlanDto.java
  16. 26 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ActivityPlanRewardDto.java
  17. 0 12
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ActivityRewardDto.java
  18. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/UpdateRewardDto.java
  19. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityPlanRewardSearch.java
  20. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityPlanSearch.java
  21. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityRewardSearch.java
  22. 70 56
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java
  23. 87 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlanReward.java
  24. 114 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlanStandard.java
  25. 97 23
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityReward.java
  26. 99 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityRewardChangeStock.java
  27. 19 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanEvaluationService.java
  28. 39 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanRewardService.java
  29. 14 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanService.java
  30. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanStandardService.java
  31. 24 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java
  32. 69 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanEvaluationServiceImpl.java
  33. 37 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanRewardServiceImpl.java
  34. 95 50
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanServiceImpl.java
  35. 36 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanStandardServiceImpl.java
  36. 63 31
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java
  37. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityPlanRewardVo.java
  38. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityPlanVo.java
  39. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityRewardVo.java
  40. 46 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanEvaluationMapper.xml
  41. 5 26
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanMapper.xml
  42. 61 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanRewardMapper.xml
  43. 23 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanStandardMapper.xml
  44. 35 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRewardChangeStockMapper.xml
  45. 50 18
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRewardMapper.xml

+ 2 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ActivityTypeEnum.java

@@ -11,7 +11,8 @@ import com.yonge.toolset.base.enums.BaseEnum;
  */
 public enum ActivityTypeEnum implements BaseEnum<String, ActivityTypeEnum> {
 
-    EVALUATION("评测活动")
+    EVALUATION("评测活动"),
+    STANDARD_GIFT("达标赠送"),
     ;
 
     @EnumValue

+ 2 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/CacheNameEnum.java

@@ -26,7 +26,8 @@ public enum CacheNameEnum implements BaseEnum<String, CacheNameEnum> {
     LOCK_CHANGE_ACCOUNT("账户变更锁"),
     LOCK_CHANGE_PIANO_ROOM_ACCOUNT("琴房账户变更锁"),
     LOCK_WITHDRAWAL("锁用户结算"),
-
+    LOCK_REWARD_STOCK("锁奖品库存变更"),
+    LOCK_ACTIVITY_REWARD_STOCK("锁活动奖品变更"),
     ;
     /***
      * 缓存描述

+ 40 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ConditionEnum.java

@@ -0,0 +1,40 @@
+package com.yonge.cooleshow.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 达标条件
+ *
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:48
+ */
+public enum ConditionEnum implements BaseEnum<String, ConditionEnum> {
+
+    ENTRY("达人认证"),
+    LIVEING("开通直播"),
+    PRACTICE("首次完成陪练课设置"),
+    LIVE("首次创建直播课"),
+    VIDEO("首次创建视频课"),
+    BIND_STUDENT("学员绑定")
+
+    ;
+
+    @EnumValue
+    private String code;
+    private String msg;
+
+    ConditionEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

+ 35 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ConditionMethodEnum.java

@@ -0,0 +1,35 @@
+package com.yonge.cooleshow.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 计算方式
+ *
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:48
+ */
+public enum ConditionMethodEnum implements BaseEnum<String, ConditionMethodEnum> {
+
+    AND("全部满足"),
+    OR("满足其一"),
+    ;
+
+    @EnumValue
+    private String code;
+    private String msg;
+
+    ConditionMethodEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

+ 36 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/RewardTypeEnum.java

@@ -0,0 +1,36 @@
+package com.yonge.cooleshow.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 奖品类型
+ *
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:48
+ */
+public enum RewardTypeEnum implements BaseEnum<String, RewardTypeEnum> {
+
+    ACTUAL("实物"),
+    VIP("小酷AI会员"),
+    PIAMO_ROOM("琴房时长"),
+    ;
+
+    @EnumValue
+    private String code;
+    private String msg;
+
+    RewardTypeEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

+ 38 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/UnitEnum.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 单位枚举
+ *
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:48
+ */
+public enum UnitEnum implements BaseEnum<String, UnitEnum> {
+
+    DAY("天"),
+    MONTH("月"),
+    YEAR("年"),
+    MINUTE("分钟数"),
+    PCS("个"),
+    ;
+
+    @EnumValue
+    private String code;
+    private String msg;
+
+    UnitEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

+ 53 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityPlanController.java

@@ -3,17 +3,19 @@ package com.yonge.cooleshow.admin.controller;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.support.PageUtil;
 
-import com.yonge.toolset.base.util.StringUtil;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -24,6 +26,8 @@ import com.yonge.cooleshow.biz.dal.dto.search.ActivityPlanSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
 import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
 
+import java.util.List;
+
 @RestController
 @RequestMapping("/activityPlan")
 @Api(value = "活动计划表", tags = "活动计划表")
@@ -67,7 +71,15 @@ public class ActivityPlanController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return HttpResponseResult.succeed(activityPlanService.submit(activityPlan, user));
+        activityPlan.setUserId(user.getId());
+        try {
+            return HttpResponseResult.succeed(activityPlanService.submit(activityPlan));
+        } catch (BizException e) {
+            return HttpResponseResult.failed(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResponseResult.failed("变更失败");
+        }
     }
 
     /**
@@ -85,4 +97,43 @@ public class ActivityPlanController extends BaseController {
         }
         return status(activityPlanService.updateActivityState(activityId, activityState, user.getId()));
     }
+
+    /**
+     * 草稿/正式
+     */
+    @GetMapping("/updateDraftFlag")
+    @ApiOperation(value = "草稿/正式")
+    @PreAuthorize("@pcs.hasPermissions('activityPlan/updateDraftFlag')")
+    public HttpResponseResult updateDraftFlag(
+            @ApiParam(value = "活动id", required = true) @RequestParam("activityId") Long activityId,
+            @ApiParam(value = "创建状态 0 正式 1 草稿 ", required = true) @RequestParam("draftFlag") Integer draftFlag) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return status(activityPlanService.updateDraftFlag(activityId, draftFlag, user.getId()));
+    }
+
+    /**
+     * 修改奖品
+     */
+    @GetMapping("/saveOrUpdateReward")
+    @ApiOperation(value = "修改奖品")
+    @PreAuthorize("@pcs.hasPermissions('activityPlan/updateReward')")
+    public HttpResponseResult saveOrUpdateReward(@Validated @RequestBody List<ActivityPlanRewardDto> updateRewardDtoList) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        try {
+            return HttpResponseResult.succeed(activityPlanService.saveOrUpdateReward(updateRewardDtoList));
+        } catch (BizException e) {
+            return HttpResponseResult.failed(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResponseResult.failed("变更失败");
+        }
+    }
+
+
 }

+ 88 - 30
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityRewardController.java

@@ -3,9 +3,11 @@ package com.yonge.cooleshow.admin.controller;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
+import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.support.PageUtil;
 
@@ -24,6 +26,8 @@ import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 import com.yonge.cooleshow.biz.dal.service.ActivityRewardService;
 
+import java.util.List;
+
 @RestController
 @RequestMapping("/activityReward")
 @Api(value = "活动奖品表", tags = "活动奖品表")
@@ -31,51 +35,105 @@ public class ActivityRewardController extends BaseController {
 
     @Autowired
     private ActivityRewardService activityRewardService;
-	@Resource
-	private SysUserFeignService sysUserFeignService;
+    @Resource
+    private SysUserFeignService sysUserFeignService;
 
-	/**
+    /**
      * 通过奖品id查询单条
      */
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "通过奖品id查询单条", notes = "传入id")
-	@PreAuthorize("@pcs.hasPermissions('activityReward/detail')")
-	public HttpResponseResult<ActivityRewardVo> detail(@PathVariable("id") Long id) {
-    	return succeed(activityRewardService.detail(id));
-	}
-
-	/**
-	 * 通过活动id查询单条
-	 */
-	@GetMapping("/detailByActivityId/{id}")
-	@ApiOperation(value = "通过活动id查询单条", notes = "传入id")
-	@PreAuthorize("@pcs.hasPermissions('activityReward/detailByActivityId')")
-	public HttpResponseResult<ActivityRewardVo> detailByActivityId(@PathVariable("id") Long id) {
-		return succeed(activityRewardService.detailByActivityId(id));
-	}
-    
+    @PreAuthorize("@pcs.hasPermissions('activityReward/detail')")
+    public HttpResponseResult<ActivityRewardVo> detail(@PathVariable("id") Long id) {
+        return succeed(activityRewardService.detail(id));
+    }
+
+    /**
+     * 通过活动id查询单条(弃用)
+     */
+    @GetMapping("/detailByActivityId/{id}")
+    @ApiOperation(value = "通过活动id查询单条(弃用)", notes = "传入id")
+    @PreAuthorize("@pcs.hasPermissions('activityReward/detailByActivityId')")
+    public HttpResponseResult<ActivityRewardVo> detailByActivityId(@PathVariable("id") Long id) {
+        return succeed(activityRewardService.detailByActivityId(id));
+    }
+
     /**
      * 查询分页
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入activityRewardSearch")
-	@PreAuthorize("@pcs.hasPermissions('activityReward/page')")
-	public HttpResponseResult<PageInfo<ActivityRewardVo>> page(@RequestBody ActivityRewardSearch query) {
-		IPage<ActivityRewardVo> pages = activityRewardService.selectPage(PageUtil.getPage(query), query);
+    @PreAuthorize("@pcs.hasPermissions('activityReward/page')")
+    public HttpResponseResult<PageInfo<ActivityRewardVo>> page(@RequestBody ActivityRewardSearch query) {
+        IPage<ActivityRewardVo> pages = activityRewardService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
-	}
+    }
+
+    /**
+     * 查询列表
+     */
+    @PostMapping("/list")
+    @ApiOperation(value = "查询列表", notes = "传入activityRewardSearch")
+    @PreAuthorize("@pcs.hasPermissions('activityReward/list')")
+    public HttpResponseResult<List<ActivityRewardVo>> list(@RequestBody ActivityRewardSearch query) {
+        List<ActivityRewardVo> list = activityRewardService.selectAll(query);
+        return succeed(list);
+    }
 
     /**
-	 * 新增或修改
-	 */
+     * 新增或修改
+     */
     @PostMapping("/submit")
     @ApiOperation(value = "新增或修改", notes = "传入activityReward")
-	@PreAuthorize("@pcs.hasPermissions('activityReward/submit')")
-	public HttpResponseResult submit(@Valid @RequestBody ActivityRewardDto activityReward) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || null == user.getId()) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
+    @PreAuthorize("@pcs.hasPermissions('activityReward/submit')")
+    public HttpResponseResult submit(@Valid @RequestBody ActivityRewardDto activityReward) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
         return status(activityRewardService.submit(activityReward, user));
     }
+
+    /**
+     * 启用/停用
+     */
+    @GetMapping("/updateStatus")
+    @ApiOperation(value = "启用/停用")
+    @PreAuthorize("@pcs.hasPermissions('activityPlan/updateStatus')")
+    public HttpResponseResult updateStatus(
+            @ApiParam(value = "活动id", required = true) @RequestParam("id") Long id,
+            @ApiParam(value = "活动状态 0 停用 1 启用", required = true) @RequestParam("status") Integer status) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return status(activityRewardService.updateStatus(id, status, user.getId()));
+    }
+
+    /**
+     * 调整库存
+     */
+    @GetMapping("/updateStock")
+    @ApiOperation(value = "调整库存")
+    @PreAuthorize("@pcs.hasPermissions('activityPlan/updateStock')")
+    public HttpResponseResult updateStock(@RequestBody ActivityRewardChangeStock activityRewardChangeStock) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        activityRewardChangeStock.setCreateBy(user.getId());
+
+        try {
+            activityRewardService.updateStock(activityRewardChangeStock);
+            return HttpResponseResult.succeed();
+        } catch (BizException e) {
+            return HttpResponseResult.failed(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResponseResult.failed("变更失败");
+        }
+    }
+
+
+
 }

+ 1 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanDao.java

@@ -65,11 +65,5 @@ public interface ActivityPlanDao extends BaseMapper<ActivityPlan> {
 	 */
     List<ActivityPlan> activityReward();
 
-	/**
-	 *
-	 * @param activityPlanId
-	 * @param activityType
-	 * @return
-	 */
-	List<ActivityUserReward> getUserReward(@Param("activityPlanId")Long activityPlanId,@Param("activityType") String activityType);
+
 }

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanEvaluationDao.java

@@ -2,8 +2,21 @@ package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlanEvaluation;
+import com.yonge.cooleshow.biz.dal.entity.ActivityUserReward;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 public interface ActivityPlanEvaluationDao extends BaseMapper<ActivityPlanEvaluation>{
+    /**
+     *
+     * @param activityPlanId
+     * @return
+     */
+    List<ActivityUserReward> getUserReward(@Param("activityPlanId")Long activityPlanId);
+
+
+
 
 }

+ 37 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanRewardDao.java

@@ -0,0 +1,37 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
+import org.apache.ibatis.annotations.Param;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward;
+import com.yonge.cooleshow.biz.dal.vo.ActivityPlanRewardVo;
+import com.yonge.cooleshow.biz.dal.dto.search.ActivityPlanRewardSearch;
+
+
+public interface ActivityPlanRewardDao extends BaseMapper<ActivityPlanReward>{
+	/**
+	 * 查询详情
+     * @author liweifan
+     * @date 2022-08-17 11:13:13
+     * @return: com.yonge.cooleshow.biz.dal.vo.ActivityPlanRewardVo
+	 */
+	ActivityPlanRewardVo detail(@Param("id") Long id);
+
+	/**
+	 * 分页查询
+     * @author liweifan
+     * @date 2022-08-17 11:13:13
+     * @return: com.yonge.cooleshow.biz.dal.vo.ActivityPlanRewardVo
+	 */
+	List<ActivityPlanRewardVo> selectPage(@Param("page") IPage page, @Param("param") ActivityPlanRewardSearch activityPlanReward);
+
+	/**
+	 * 查询活动下的奖品
+	 * @param activityId
+	 * @return
+	 */
+    List<ActivityPlanRewardDto> queryActivityPlanReward(@Param("activityId")Long activityId);
+}

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanStandardDao.java

@@ -0,0 +1,9 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanStandard;
+
+
+public interface ActivityPlanStandardDao extends BaseMapper<ActivityPlanStandard>{
+
+}

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityRewardChangeStockDao.java

@@ -0,0 +1,8 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock;
+
+
+public interface ActivityRewardChangeStockDao extends BaseMapper<ActivityRewardChangeStock>{
+}

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityRewardDao.java

@@ -18,6 +18,7 @@ public interface ActivityRewardDao extends BaseMapper<ActivityReward>{
      * @return: com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo
 	 */
 	ActivityRewardVo detail(@Param("id") Long id);
+
 	ActivityRewardVo detailByActivityId(@Param("id") Long id);
 
 	/**
@@ -28,4 +29,10 @@ public interface ActivityRewardDao extends BaseMapper<ActivityReward>{
 	 */
 	List<ActivityRewardVo> selectPage(@Param("page") IPage page, @Param("param") ActivityRewardSearch activityReward);
 
+	/**
+	 * 列表查询
+	 * @param activityReward
+	 * @return
+	 */
+	List<ActivityRewardVo> selectAll(@Param("param") ActivityRewardSearch activityReward);
 }

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ActivityPlanDto.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.dto;
 
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlanEvaluation;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanStandard;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -15,9 +16,22 @@ import javax.validation.Valid;
 public class ActivityPlanDto extends ActivityPlan{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "操作人id",hidden = true)
+	private Long userId;
+
 	@ApiModelProperty(value = "活动计划-评测活动拓展")
 	private ActivityPlanEvaluation planEvaluation;
 
+	@ApiModelProperty(value = "活动计划-达标赠送活动拓展")
+	private ActivityPlanStandard planStandard;
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
 
 	public ActivityPlanEvaluation getPlanEvaluation() {
 		return planEvaluation;
@@ -26,4 +40,12 @@ public class ActivityPlanDto extends ActivityPlan{
 	public void setPlanEvaluation(ActivityPlanEvaluation planEvaluation) {
 		this.planEvaluation = planEvaluation;
 	}
+
+	public ActivityPlanStandard getPlanStandard() {
+		return planStandard;
+	}
+
+	public void setPlanStandard(ActivityPlanStandard planStandard) {
+		this.planStandard = planStandard;
+	}
 }

+ 26 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ActivityPlanRewardDto.java

@@ -0,0 +1,26 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward;
+import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-08-17 11:13:13
+ */
+@ApiModel(value = "ActivityPlanRewardDto对象", description = "活动计划奖品表数据传输对象")
+public class ActivityPlanRewardDto extends ActivityPlanReward{
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty("奖品对象")
+	private ActivityReward activityReward;
+
+	public ActivityReward getActivityReward() {
+		return activityReward;
+	}
+
+	public void setActivityReward(ActivityReward activityReward) {
+		this.activityReward = activityReward;
+	}
+}

+ 0 - 12
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ActivityRewardDto.java

@@ -1,9 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -13,14 +11,4 @@ import io.swagger.annotations.ApiModelProperty;
 public class ActivityRewardDto extends ActivityReward{
 	private static final long serialVersionUID = 1L;
 
-	@ApiModelProperty("创建状态 0 正式 1 草稿 ")
-	private Integer draftFlag;
-
-	public Integer getDraftFlag() {
-		return draftFlag;
-	}
-
-	public void setDraftFlag(Integer draftFlag) {
-		this.draftFlag = draftFlag;
-	}
 }

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/UpdateRewardDto.java

@@ -0,0 +1,13 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import io.swagger.annotations.ApiModel;
+
+import java.io.Serializable;
+
+@ApiModel(value = "UpdateRewardDto对象", description = "奖品修改对象")
+public class UpdateRewardDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+
+}

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityPlanRewardSearch.java

@@ -0,0 +1,14 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-08-17 11:13:13
+ */
+@ApiModel(value = "ActivityPlanRewardSearch对象", description = "活动计划奖品表查询对象")
+public class ActivityPlanRewardSearch extends QueryInfo{
+	private static final long serialVersionUID = 1L;
+
+}

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityPlanSearch.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -19,6 +20,8 @@ public class ActivityPlanSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 	@ApiModelProperty("活动名称 ")
 	private String activityName;
+	@ApiModelProperty("客户端:STUDENT 学生端 TEACHER 老师端 ")
+	private ClientEnum activityClient;
 	@ApiModelProperty("创建状态 0 正式 1 草稿 ")
 	private Integer draftFlag;
 	@ApiModelProperty("活动状态 0 停用 1 启用 ")

+ 33 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityRewardSearch.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -11,4 +12,36 @@ import io.swagger.annotations.ApiModel;
 public class ActivityRewardSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty("奖品名称 ")
+	private String rewardName;
+
+	@ApiModelProperty("状态 0 正常 1停用 ")
+	private Integer status;
+
+	@ApiModelProperty("客户端:STUDENT 学生端 TEACHER 老师端  多选 ")
+	private String rewardClient;
+
+	public String getRewardName() {
+		return rewardName;
+	}
+
+	public void setRewardName(String rewardName) {
+		this.rewardName = rewardName;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public String getRewardClient() {
+		return rewardClient;
+	}
+
+	public void setRewardClient(String rewardClient) {
+		this.rewardClient = rewardClient;
+	}
 }

+ 70 - 56
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.common.enums.ActivityTypeEnum;
 import com.yonge.cooleshow.common.enums.RegistrationMethodEnum;
 import io.swagger.annotations.ApiModel;
@@ -11,6 +12,7 @@ import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
 import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -25,32 +27,36 @@ import java.math.BigDecimal;
 @TableName("activity_plan")
 @ApiModel(value = "ActivityPlan对象", description = "活动计划表")
 public class ActivityPlan implements Serializable {
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
     @ApiModelProperty("主键 ")
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
-    @ApiModelProperty(value = "活动类型 EVALUATION 评测活动 ",required = true)
-	@TableField(value = "activity_type_")
+    @ApiModelProperty(value = "活动类型 EVALUATION 评测活动 STANDARD_GIFT 达标赠送", required = true)
+    @TableField(value = "activity_type_")
     @NotNull(message = "活动类型不能为空")
     private ActivityTypeEnum activityType;
+    @ApiModelProperty(value = "活动应用:STUDENT 学生端 TEACHER 老师端", required = true)
+    @TableField(value = "activity_client_")
+    @NotNull(message = "活动应用不能为空")
+    private ClientEnum activityClient;
     @ApiModelProperty("活动名称 ")
-	@TableField(value = "activity_name_")
+    @TableField(value = "activity_name_")
     @NotBlank(message = "活动名称不能为空")
     private String activityName;
     @ApiModelProperty("活动描述 ")
-	@TableField(value = "describe_")
+    @TableField(value = "describe_")
     @NotBlank(message = "活动描述不能为空")
     private String describe;
     @ApiModelProperty("规则描述 ")
-	@TableField(value = "rule_describe_")
+    @TableField(value = "rule_describe_")
     @NotBlank(message = "活动规则不能为空")
     private String ruleDescribe;
     @ApiModelProperty("主题图片 ")
-	@TableField(value = "subject_url_")
+    @TableField(value = "subject_url_")
     @NotBlank(message = "主题图片不能为空")
     private String subjectUrl;
     @ApiModelProperty("平铺背景 ")
-	@TableField(value = "background_url_")
+    @TableField(value = "background_url_")
     @NotBlank(message = "平铺背景不能为空")
     private String backgroundUrl;
     @ApiModelProperty("分享图片 ")
@@ -61,182 +67,182 @@ public class ActivityPlan implements Serializable {
     @TableField(value = "activity_url_")
     private String activityUrl;
     @ApiModelProperty("活动时间-开始 ")
-	@TableField(value = "activity_start_")
+    @TableField(value = "activity_start_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @NotNull(message = "活动开始时间不能为空")
     private Date activityStart;
     @ApiModelProperty("活动时间-结束 ")
-	@TableField(value = "activity_end_")
+    @TableField(value = "activity_end_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @NotNull(message = "活动结束时间不能为空")
     private Date activityEnd;
     @ApiModelProperty("报名方式 FREE 免费 CHARGE 收费 ")
-	@TableField(value = "registration_method_")
+    @TableField(value = "registration_method_")
     @NotNull(message = "报名缴费方式不能为空")
     private RegistrationMethodEnum registrationMethod;
     @ApiModelProperty("报名价格 ")
-	@TableField(value = "registration_price_")
+    @TableField(value = "registration_price_")
     private BigDecimal registrationPrice;
     @ApiModelProperty("分润比例 ")
     @TableField(value = "share_rate_")
     private BigDecimal shareRate;
     @ApiModelProperty("创建状态 0 正式 1 草稿 ")
-	@TableField(value = "draft_flag_")
+    @TableField(value = "draft_flag_")
     private Integer draftFlag;
     @ApiModelProperty("活动状态 0 停用 1 启用 ")
-	@TableField(value = "activity_state_")
+    @TableField(value = "activity_state_")
     private Integer activityState;
-    @ApiModelProperty("发奖状态 0 未发奖 1 已发奖 ")
+    @ApiModelProperty("发奖状态(完成状态) 0 未发奖 1 已发奖 ")
     @TableField(value = "reward_flag_")
     private Integer rewardFlag;
     @ApiModelProperty("创建时间 ")
-	@TableField(value = "create_time_")
+    @TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
     @ApiModelProperty("创建人 ")
-	@TableField(value = "create_by_")
+    @TableField(value = "create_by_")
     private Long createBy;
     @ApiModelProperty("更新时间 ")
-	@TableField(value = "update_time_")
+    @TableField(value = "update_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
     @ApiModelProperty("更新人 ")
-	@TableField(value = "update_by_")
+    @TableField(value = "update_by_")
     private Long updateBy;
 
-	public Long getId() {
+    public Long getId() {
         return id;
     }
 
     public void setId(Long id) {
         this.id = id;
     }
-    
-	public ActivityTypeEnum getActivityType() {
+
+    public ActivityTypeEnum getActivityType() {
         return activityType;
     }
 
     public void setActivityType(ActivityTypeEnum activityType) {
         this.activityType = activityType;
     }
-    
-	public String getActivityName() {
+
+    public String getActivityName() {
         return activityName;
     }
 
     public void setActivityName(String activityName) {
         this.activityName = activityName;
     }
-    
-	public String getDescribe() {
+
+    public String getDescribe() {
         return describe;
     }
 
     public void setDescribe(String describe) {
         this.describe = describe;
     }
-    
-	public String getRuleDescribe() {
+
+    public String getRuleDescribe() {
         return ruleDescribe;
     }
 
     public void setRuleDescribe(String ruleDescribe) {
         this.ruleDescribe = ruleDescribe;
     }
-    
-	public String getSubjectUrl() {
+
+    public String getSubjectUrl() {
         return subjectUrl;
     }
 
     public void setSubjectUrl(String subjectUrl) {
         this.subjectUrl = subjectUrl;
     }
-    
-	public String getBackgroundUrl() {
+
+    public String getBackgroundUrl() {
         return backgroundUrl;
     }
 
     public void setBackgroundUrl(String backgroundUrl) {
         this.backgroundUrl = backgroundUrl;
     }
-    
-	public Date getActivityStart() {
+
+    public Date getActivityStart() {
         return activityStart;
     }
 
     public void setActivityStart(Date activityStart) {
         this.activityStart = activityStart;
     }
-    
-	public Date getActivityEnd() {
+
+    public Date getActivityEnd() {
         return activityEnd;
     }
 
     public void setActivityEnd(Date activityEnd) {
         this.activityEnd = activityEnd;
     }
-    
-	public RegistrationMethodEnum getRegistrationMethod() {
+
+    public RegistrationMethodEnum getRegistrationMethod() {
         return registrationMethod;
     }
 
     public void setRegistrationMethod(RegistrationMethodEnum registrationMethod) {
         this.registrationMethod = registrationMethod;
     }
-    
-	public BigDecimal getRegistrationPrice() {
+
+    public BigDecimal getRegistrationPrice() {
         return registrationPrice;
     }
 
     public void setRegistrationPrice(BigDecimal registrationPrice) {
         this.registrationPrice = registrationPrice;
     }
-    
-	public Integer getDraftFlag() {
+
+    public Integer getDraftFlag() {
         return draftFlag;
     }
 
     public void setDraftFlag(Integer draftFlag) {
         this.draftFlag = draftFlag;
     }
-    
-	public Integer getActivityState() {
+
+    public Integer getActivityState() {
         return activityState;
     }
 
     public void setActivityState(Integer activityState) {
         this.activityState = activityState;
     }
-    
-	public Date getCreateTime() {
+
+    public Date getCreateTime() {
         return createTime;
     }
 
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-    
-	public Long getCreateBy() {
+
+    public Long getCreateBy() {
         return createBy;
     }
 
     public void setCreateBy(Long createBy) {
         this.createBy = createBy;
     }
-    
-	public Date getUpdateTime() {
+
+    public Date getUpdateTime() {
         return updateTime;
     }
 
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-    
-	public Long getUpdateBy() {
+
+    public Long getUpdateBy() {
         return updateBy;
     }
 
@@ -275,4 +281,12 @@ public class ActivityPlan implements Serializable {
     public void setRewardFlag(Integer rewardFlag) {
         this.rewardFlag = rewardFlag;
     }
+
+    public ClientEnum getActivityClient() {
+        return activityClient;
+    }
+
+    public void setActivityClient(ClientEnum activityClient) {
+        this.activityClient = activityClient;
+    }
 }

+ 87 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlanReward.java

@@ -0,0 +1,87 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Positive;
+
+/**
+ * 活动计划奖品表
+ */
+@TableName("activity_plan_reward")
+@ApiModel(value = "ActivityPlanReward对象", description = "活动计划奖品表")
+public class ActivityPlanReward implements Serializable {
+	private static final long serialVersionUID = 1L;
+    @ApiModelProperty("主键 ")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    @ApiModelProperty("活动id ")
+	@TableField(value = "activity_id_")
+    @NotNull(message = "活动id不能为空")
+    private Long activityId;
+    @ApiModelProperty("奖品id ")
+	@TableField(value = "reward_id_")
+    @NotNull(message = "奖品id不能为空")
+    private Long rewardId;
+    @ApiModelProperty("奖品数量 ")
+	@TableField(value = "reward_num_")
+    @NotNull(message = "奖品数量不能为空")
+    @Positive(message = "奖品数量必须大于0")
+    private Integer rewardNum;
+    @ApiModelProperty("创建时间 ")
+	@TableField(value = "create_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date createTime;
+
+	public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+	public Long getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Long activityId) {
+        this.activityId = activityId;
+    }
+    
+	public Long getRewardId() {
+        return rewardId;
+    }
+
+    public void setRewardId(Long rewardId) {
+        this.rewardId = rewardId;
+    }
+    
+	public Integer getRewardNum() {
+        return rewardNum;
+    }
+
+    public void setRewardNum(Integer rewardNum) {
+        this.rewardNum = rewardNum;
+    }
+    
+	public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+    
+}

+ 114 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlanStandard.java

@@ -0,0 +1,114 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 活动计划-达标赠送活动拓展字段表
+ */
+@TableName("activity_plan_standard")
+@ApiModel(value = "ActivityPlanStandard对象", description = "活动计划-达标赠送活动拓展字段表")
+public class ActivityPlanStandard implements Serializable {
+	private static final long serialVersionUID = 1L;
+    @ApiModelProperty("主键 ")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    @ApiModelProperty("活动id ")
+	@TableField(value = "activity_id_")
+    private Long activityId;
+    @ApiModelProperty("达标条件:ENTRY 达人认证 LIVEING 开通直播 PRACTICE 首次完成陪练课设置 LIVE 首次创建直播课 VIDEO 首次创建视频课 BIND_STUDENT 学员绑定 ")
+	@TableField(value = "condition_")
+    private String condition;
+    @ApiModelProperty("计算方式:AND 全部满足 OR 满足其一 ")
+	@TableField(value = "calculation_method")
+    private String calculationMethod;
+    @ApiModelProperty("创建时间 ")
+	@TableField(value = "create_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date createTime;
+    @ApiModelProperty("创建人 ")
+	@TableField(value = "create_by_")
+    private Long createBy;
+    @ApiModelProperty("更新时间 ")
+    @TableField(value = "update_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date updateTime;
+    @ApiModelProperty("更新人 ")
+    @TableField(value = "update_by_")
+    private Long updateBy;
+
+	public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+	public Long getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Long activityId) {
+        this.activityId = activityId;
+    }
+    
+	public String getCondition() {
+        return condition;
+    }
+
+    public void setCondition(String condition) {
+        this.condition = condition;
+    }
+    
+	public String getCalculationMethod() {
+        return calculationMethod;
+    }
+
+    public void setCalculationMethod(String calculationMethod) {
+        this.calculationMethod = calculationMethod;
+    }
+    
+	public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+    
+	public Long getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(Long createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Long getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(Long updateBy) {
+        this.updateBy = updateBy;
+    }
+}

+ 97 - 23
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityReward.java

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.common.enums.RewardTypeEnum;
+import com.yonge.cooleshow.common.enums.UnitEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -14,6 +17,8 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Positive;
+
 
 /**
  * 活动奖品表
@@ -21,33 +26,54 @@ import javax.validation.constraints.NotNull;
 @TableName("activity_reward")
 @ApiModel(value = "ActivityReward对象", description = "活动奖品表")
 public class ActivityReward implements Serializable {
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
+
     @ApiModelProperty("主键 ")
     @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
-    @ApiModelProperty("活动id ")
-	@TableField(value = "activity_id_")
-    @NotNull(message = "活动id不能为空")
+    @ApiModelProperty("活动id(评测活动冗余) ")
+    @TableField(value = "activity_id_")
     private Long activityId;
+    @ApiModelProperty("客户端:STUDENT 学生端 TEACHER 老师端  多选 ")
+    @TableField(value = "reward_client_")
+    @NotBlank(message = "客户端不能为空")
+    private String rewardClient;
     @ApiModelProperty("奖品名称 ")
-	@TableField(value = "reward_name_")
+    @TableField(value = "reward_name_")
     @NotBlank(message = "奖品名称不能为空")
     private String rewardName;
+    @ApiModelProperty("奖品类型:  ACTUAL 实物 VIP 小酷AI会员 PIAMO_ROOM 琴房时长 ")
+    @TableField(value = "reward_type_")
+    @NotNull(message = "奖品类型不能为空")
+    private RewardTypeEnum rewardType;
     @ApiModelProperty("奖品描述 ")
-	@TableField(value = "reward_describe_")
-    @NotBlank(message = "奖品描述不能为空")
+    @TableField(value = "reward_describe_")
     private String rewardDescribe;
     @ApiModelProperty("奖品图片 ")
-	@TableField(value = "img_url_")
+    @TableField(value = "img_url_")
     @NotBlank(message = "奖品图片不能为空")
     private String imgUrl;
+    @ApiModelProperty("库存数 ")
+    @TableField(value = "stock_")
+    @NotNull(message = "库存数不能为空")
+    @Positive(message = "库存数必须大于0")
+    private Integer stock;
+    @ApiModelProperty("数量(每个奖品) ")
+    @TableField(value = "num_")
+    private Integer num;
+    @ApiModelProperty("单位 DAY 天 MONTH 月 YEAR 年")
+    @TableField(value = "unit_")
+    private UnitEnum unit;
+    @ApiModelProperty("状态 0 正常 1停用 ")
+    @TableField(value = "status_")
+    private Integer status;
     @ApiModelProperty("创建时间 ")
-	@TableField(value = "create_time_")
+    @TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date createTime;
     @ApiModelProperty("创建人 ")
-	@TableField(value = "create_by_")
+    @TableField(value = "create_by_")
     private Long createBy;
     @ApiModelProperty("更新时间 ")
     @TableField(value = "update_time_")
@@ -58,55 +84,103 @@ public class ActivityReward implements Serializable {
     @TableField(value = "update_by_")
     private Long updateBy;
 
-	public Long getId() {
+    public Long getId() {
         return id;
     }
 
     public void setId(Long id) {
         this.id = id;
     }
-    
-	public Long getActivityId() {
+
+    public Long getActivityId() {
         return activityId;
     }
 
     public void setActivityId(Long activityId) {
         this.activityId = activityId;
     }
-    
-	public String getRewardName() {
+
+    public String getRewardClient() {
+        return rewardClient;
+    }
+
+    public void setRewardClient(String rewardClient) {
+        this.rewardClient = rewardClient;
+    }
+
+    public String getRewardName() {
         return rewardName;
     }
 
     public void setRewardName(String rewardName) {
         this.rewardName = rewardName;
     }
-    
-	public String getRewardDescribe() {
+
+    public RewardTypeEnum getRewardType() {
+        return rewardType;
+    }
+
+    public void setRewardType(RewardTypeEnum rewardType) {
+        this.rewardType = rewardType;
+    }
+
+    public String getRewardDescribe() {
         return rewardDescribe;
     }
 
     public void setRewardDescribe(String rewardDescribe) {
         this.rewardDescribe = rewardDescribe;
     }
-    
-	public String getImgUrl() {
+
+    public String getImgUrl() {
         return imgUrl;
     }
 
     public void setImgUrl(String imgUrl) {
         this.imgUrl = imgUrl;
     }
-    
-	public Date getCreateTime() {
+
+    public Integer getStock() {
+        return stock;
+    }
+
+    public void setStock(Integer stock) {
+        this.stock = stock;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public UnitEnum getUnit() {
+        return unit;
+    }
+
+    public void setUnit(UnitEnum unit) {
+        this.unit = unit;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreateTime() {
         return createTime;
     }
 
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-    
-	public Long getCreateBy() {
+
+    public Long getCreateBy() {
         return createBy;
     }
 

+ 99 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityRewardChangeStock.java

@@ -0,0 +1,99 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Positive;
+
+/**
+ * 活动奖品库存调整记录表
+ */
+@TableName("activity_reward_change_stock")
+@ApiModel(value = "ActivityRewardChangeStock对象", description = "活动奖品库存调整记录表")
+public class ActivityRewardChangeStock implements Serializable {
+	private static final long serialVersionUID = 1L;
+    @ApiModelProperty("主键 ")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    @ApiModelProperty("奖品id ")
+	@TableField(value = "reward_id_")
+    @NotNull(message = "奖品id不能为空")
+    private Long rewardId;
+    @ApiModelProperty("调整库存数 ")
+	@TableField(value = "stock_")
+    @NotNull(message = "调整库存数不能为空")
+    @Positive(message = "调整库存数必须大于0")
+    private Integer stock;
+    @ApiModelProperty("调整类型: IN 增加 OUT 减少 ")
+	@TableField(value = "change_type_")
+    @NotNull(message = "调整类型不能为空")
+    private InOrOutEnum changeType;
+    @ApiModelProperty("创建时间 ")
+	@TableField(value = "create_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date createTime;
+    @ApiModelProperty("创建人 ")
+	@TableField(value = "create_by_")
+    private Long createBy;
+
+	public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+	public Long getRewardId() {
+        return rewardId;
+    }
+
+    public void setRewardId(Long rewardId) {
+        this.rewardId = rewardId;
+    }
+    
+	public Integer getStock() {
+        return stock;
+    }
+
+    public void setStock(Integer stock) {
+        this.stock = stock;
+    }
+    
+	public InOrOutEnum getChangeType() {
+        return changeType;
+    }
+
+    public void setChangeType(InOrOutEnum changeType) {
+        this.changeType = changeType;
+    }
+    
+	public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+    
+	public Long getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(Long createBy) {
+        this.createBy = createBy;
+    }
+    
+}

+ 19 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanEvaluationService.java

@@ -0,0 +1,19 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanEvaluation;
+
+/**
+ * 活动计划-评测活动拓展字段表 服务类
+ * @author liweifan
+ * @date 2022-08-17
+ */
+public interface ActivityPlanEvaluationService extends IService<ActivityPlanEvaluation>  {
+
+	boolean createOrUpdate(ActivityPlanDto entity);
+
+	void cancelActivity(Long activityId);
+
+	void successActivity(Long activityId);
+}

+ 39 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanRewardService.java

@@ -0,0 +1,39 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
+import com.yonge.cooleshow.biz.dal.vo.ActivityPlanRewardVo;
+import com.yonge.cooleshow.biz.dal.dto.search.ActivityPlanRewardSearch;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward;
+
+import java.util.List;
+
+/**
+ * 活动计划奖品表 服务类
+ * @author liweifan
+ * @date 2022-08-17
+ */
+public interface ActivityPlanRewardService extends IService<ActivityPlanReward>  {
+
+	/**
+     * 查询详情
+     * @author liweifan
+ 	 * @date 2022-08-17
+     */
+	ActivityPlanRewardVo detail(Long id);
+
+    /**
+     * 分页查询
+     * @author liweifan
+ 	 * @date 2022-08-17
+     */
+    IPage<ActivityPlanRewardVo> selectPage(IPage<ActivityPlanRewardVo> page, ActivityPlanRewardSearch query);
+
+	/**
+	 * 查询活动下的奖品
+	 * @param activityId
+	 * @return
+	 */
+	List<ActivityPlanRewardDto> queryActivityPlanReward(Long activityId);
+}

+ 14 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanService.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
 
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 
 import com.yonge.cooleshow.biz.dal.vo.ActivityPlanVo;
@@ -17,6 +18,8 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
+import java.util.List;
+
 /**
  * 活动计划表 服务类
  * @author liweifan
@@ -39,12 +42,14 @@ public interface ActivityPlanService extends IService<ActivityPlan>  {
 	/**
 	 * 新增活动
 	 * @param activityPlan
-	 * @param user
 	 * @return
 	 */
-	ActivityPlan submit(ActivityPlanDto activityPlan, SysUser user);
+	ActivityPlan submit(ActivityPlanDto activityPlan);
 
 	Boolean updateActivityState(Long activityId, Integer activityState, Long id);
+
+	Boolean updateDraftFlag(Long activityId, Integer draftFlag, Long id);
+
 	/**
 	 * 活动信息
 	 *
@@ -91,4 +96,11 @@ public interface ActivityPlanService extends IService<ActivityPlan>  {
 	 * 定时变更活动状态
 	 */
     void activityState();
+
+	/**
+	 * 变更活动奖品
+	 * @param updateRewardDtoList
+	 * @return
+	 */
+    Boolean saveOrUpdateReward(List<ActivityPlanRewardDto> updateRewardDtoList);
 }

+ 17 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanStandardService.java

@@ -0,0 +1,17 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanStandard;
+
+/**
+ * 活动计划-达标赠送活动拓展字段表 服务类
+ * @author liweifan
+ * @date 2022-08-17
+ */
+public interface ActivityPlanStandardService extends IService<ActivityPlanStandard>  {
+
+    boolean createOrUpdate(ActivityPlanDto entity);
+
+    void cancelActivity(Long aLong);
+}

+ 24 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
+import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock;
 import com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo;
 import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
@@ -37,6 +38,13 @@ public interface ActivityRewardService extends IService<ActivityReward>  {
      */
     IPage<ActivityRewardVo> selectPage(IPage<ActivityRewardVo> page, ActivityRewardSearch query);
 
+	/**
+	 * 列表查询
+	 * @author liweifan
+	 * @date 2022-08-04
+	 */
+	List<ActivityRewardVo> selectAll(ActivityRewardSearch query);
+
 	Boolean submit(ActivityRewardDto activityReward, SysUser user);
 
 	/**
@@ -47,4 +55,20 @@ public interface ActivityRewardService extends IService<ActivityReward>  {
 	 */
     List<ActivityReward> getActivityReward(Long activityPlanId);
 
+	/**
+	 * 启用/停用
+	 * @param id
+	 * @param status
+	 * @param userId
+	 * @return
+	 */
+    Boolean updateStatus(Long id, Integer status, Long userId);
+
+	/**
+	 * 调整库存
+	 * @param activityRewardChangeStock
+	 * @return
+	 */
+	Boolean updateStock(ActivityRewardChangeStock activityRewardChangeStock);
+
 }

+ 69 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanEvaluationServiceImpl.java

@@ -0,0 +1,69 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
+import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
+import com.yonge.cooleshow.biz.dal.entity.ActivityUserReward;
+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
+import com.yonge.cooleshow.biz.dal.service.ActivityUserRewardService;
+import com.yonge.cooleshow.biz.dal.service.UserOrderService;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanEvaluation;
+import com.yonge.cooleshow.biz.dal.dao.ActivityPlanEvaluationDao;
+import com.yonge.cooleshow.biz.dal.service.ActivityPlanEvaluationService;
+
+import java.util.List;
+
+
+@Service
+public class ActivityPlanEvaluationServiceImpl extends ServiceImpl<ActivityPlanEvaluationDao, ActivityPlanEvaluation> implements ActivityPlanEvaluationService {
+    private final static Logger log = LoggerFactory.getLogger(ActivityPlanEvaluationServiceImpl.class);
+
+    @Autowired
+    private UserOrderService userOrderService;
+    @Autowired
+    private ActivityUserRewardService activityUserRewardService;
+
+    @Override
+    public boolean createOrUpdate(ActivityPlanDto activityPlan) {
+        ActivityPlanEvaluation planExpand = activityPlan.getPlanEvaluation();
+        if (null == activityPlan.getId()) {
+            planExpand.setId(activityPlan.getId());
+            planExpand.setCreateBy(activityPlan.getUserId());
+            planExpand.setUpdateBy(activityPlan.getUserId());
+            save(planExpand);
+        }else{
+            planExpand.setUpdateBy(activityPlan.getUserId());
+            updateById(planExpand);
+        }
+        return true;
+    }
+
+    @Override
+    public void cancelActivity(Long activytyId) {
+        OrderSearch query = new OrderSearch();
+        query.setOrderType(OrderTypeEnum.ACTI_REGIST.getCode());
+        query.setGoodType(GoodTypeEnum.ACTI_REGIST.getCode());
+        query.setBizId(activytyId);
+        List<UserOrderVo> userOrderVos = userOrderService.selectAllList(query);
+        for (UserOrderVo userOrderVo : userOrderVos) {
+            OrderPayReq payReq = new OrderPayReq();
+            payReq.setOrderNo(userOrderVo.getOrderNo());
+            payReq.setUserId(userOrderVo.getUserId());
+            payReq.setReason("活动已结束");
+            userOrderService.orderCancel(payReq);
+        }
+    }
+
+    @Override
+    public void successActivity(Long activityId) {
+        List<ActivityUserReward> activityUserRewardList = baseMapper.getUserReward(activityId);
+        activityUserRewardService.saveBatch(activityUserRewardList);
+    }
+}

+ 37 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanRewardServiceImpl.java

@@ -0,0 +1,37 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
+import org.springframework.stereotype.Service;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward;
+import com.yonge.cooleshow.biz.dal.vo.ActivityPlanRewardVo;
+import com.yonge.cooleshow.biz.dal.dto.search.ActivityPlanRewardSearch;
+import com.yonge.cooleshow.biz.dal.dao.ActivityPlanRewardDao;
+import com.yonge.cooleshow.biz.dal.service.ActivityPlanRewardService;
+
+import java.util.List;
+
+
+@Service
+public class ActivityPlanRewardServiceImpl extends ServiceImpl<ActivityPlanRewardDao, ActivityPlanReward> implements ActivityPlanRewardService {
+    private final static Logger log = LoggerFactory.getLogger(ActivityPlanRewardServiceImpl.class);
+
+	@Override
+    public ActivityPlanRewardVo detail(Long id) {
+        return baseMapper.detail(id);
+    }
+    
+    @Override
+    public IPage<ActivityPlanRewardVo> selectPage(IPage<ActivityPlanRewardVo> page, ActivityPlanRewardSearch query){
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+
+    @Override
+    public List<ActivityPlanRewardDto> queryActivityPlanReward(Long activityId) {
+        return baseMapper.queryActivityPlanReward(activityId);
+    }
+
+}

+ 95 - 50
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanServiceImpl.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.biz.dal.dao.ActivityPlanDao;
 import com.yonge.cooleshow.biz.dal.dao.ActivityPlanEvaluationDao;
 import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlanEvaluation;
@@ -35,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
@@ -42,22 +44,26 @@ import java.util.Date;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.function.Consumer;
 
 
 @Service
 public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, ActivityPlan> implements ActivityPlanService {
     private final static Logger log = LoggerFactory.getLogger(ActivityPlanServiceImpl.class);
-    @Resource
-    private ActivityPlanEvaluationDao activityPlanEvaluationDao;
+    @Autowired
+    private ActivityPlanEvaluationService activityPlanEvaluationService;
+
+    @Autowired
+    private ActivityPlanStandardService activityPlanStandardService;
 
     @Autowired
     private ActivityEvaluationService activityEvaluationService;
 
     @Autowired
-    private ActivityRewardService activityRewardService;
+    private ActivityPlanRewardService activityPlanRewardService;
 
     @Autowired
-    private ActivityUserRewardService activityUserRewardService;
+    private ActivityRewardService activityRewardService;
 
     @Resource
     private SysUserFeignService sysUserFeignService;
@@ -71,17 +77,42 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
     @Autowired
     private SysMessageService sysMessageService;
 
-    @Autowired
-    private UserOrderService userOrderService;
+    //保存/更新拓展字段
+    private static final Map<ActivityTypeEnum, Consumer<ActivityPlanDto>> saveOrUpdateExpand = new HashMap<>();
+    //取消活动
+    private static final Map<ActivityTypeEnum, Consumer<Long>> cancelActivity = new HashMap<>();
+    //活动完成(结束)
+    private static final Map<ActivityTypeEnum, Consumer<Long>> successActivity = new HashMap<>();
+    @PostConstruct
+    private void init() {
+        /**********保存/更新拓展字段******************/
+        //评测活动
+        saveOrUpdateExpand.put(ActivityTypeEnum.EVALUATION, activityPlanEvaluationService::createOrUpdate);
+        //达标赠送活动
+        saveOrUpdateExpand.put(ActivityTypeEnum.STANDARD_GIFT, activityPlanStandardService::createOrUpdate);
+
+        /**********取消活动******************/
+        //评测活动
+        cancelActivity.put(ActivityTypeEnum.EVALUATION, activityPlanEvaluationService::cancelActivity);
+        /**********活动完成(结束)******************/
+        //评测活动
+        successActivity.put(ActivityTypeEnum.EVALUATION, activityPlanEvaluationService::successActivity);
+    }
 
     @Override
     public ActivityPlanVo detail(Long id) {
         ActivityPlanVo detail = baseMapper.detail(id);
         if (null != detail) {
             if (ActivityTypeEnum.EVALUATION.equals(detail.getActivityType())) {
-                detail.setPlanEvaluation(activityPlanEvaluationDao.selectById(detail.getId()));
+                detail.setPlanEvaluation(activityPlanEvaluationService.getById(id));
+            }
+            if (ActivityTypeEnum.STANDARD_GIFT.equals(detail.getActivityType())) {
+                detail.setPlanStandard(activityPlanStandardService.getById(id));
             }
         }
+        //查询活动奖品
+        List<ActivityPlanRewardDto> activityRewardList = activityPlanRewardService.queryActivityPlanReward(id);
+        detail.setActivityRewardList(activityRewardList);
         return detail;
     }
 
@@ -92,45 +123,46 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ActivityPlan submit(ActivityPlanDto activityPlan, SysUser user) {
+    public ActivityPlan submit(ActivityPlanDto activityPlan) {
         //验证参数
         if (!validParam(activityPlan)) {
-            return null;
+            throw new BizException("参数异常");
+        }
+
+        if(ActivityTypeEnum.EVALUATION.equals(activityPlan.getActivityType())){
+            activityPlan.setActivityClient(ClientEnum.STUDENT);
+        }else{
+            if(null == activityPlan.getActivityClient()){
+                throw new BizException("活动客户端不能为空");
+            }
         }
 
         if (null == activityPlan.getId()) {
             activityPlan.setDraftFlag(1);
-            activityPlan.setCreateBy(user.getId());
-            activityPlan.setUpdateBy(user.getId());
+            activityPlan.setCreateBy(activityPlan.getUserId());
+            activityPlan.setUpdateBy(activityPlan.getUserId());
             save(activityPlan);
-
-            ActivityPlanEvaluation planEvaluation = activityPlan.getPlanEvaluation();
-            planEvaluation.setId(activityPlan.getId());
-            planEvaluation.setCreateBy(user.getId());
-            planEvaluation.setUpdateBy(user.getId());
-            activityPlanEvaluationDao.insert(planEvaluation);
-            return activityPlan;
         } else {
             ActivityPlan old = getById(activityPlan.getId());
             //启用状态,只能修改活动结束时间
             if (old.getActivityState().equals(1)) {
                 if (activityPlan.getActivityEnd().after(new Date())) {
                     old.setActivityEnd(activityPlan.getActivityEnd());
-                    old.setUpdateBy(user.getId());
+                    old.setUpdateBy(activityPlan.getUserId());
                     updateById(old);
-                    return old;
                 }
-                return null;
             } else {
-                activityPlan.setUpdateBy(user.getId());
+                activityPlan.setUpdateBy(activityPlan.getUserId());
                 updateById(activityPlan);
-
-                ActivityPlanEvaluation planEvaluation = activityPlan.getPlanEvaluation();
-                planEvaluation.setUpdateBy(user.getId());
-                activityPlanEvaluationDao.updateById(planEvaluation);
-                return activityPlan;
             }
         }
+
+        //修改拓展信息
+        Consumer<ActivityPlanDto> afterFunction = saveOrUpdateExpand.get(activityPlan.getActivityType());
+        if (!Objects.isNull(afterFunction)) {
+            afterFunction.accept(activityPlan);
+        }
+        return activityPlan;
     }
 
     @Override
@@ -150,18 +182,31 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
             activityPlan.setActivityState(activityState);
         } else {
             activityPlan.setActivityState(2);
-            //取消活动所有订单
-            cancelActivityOrder(detail);
+            //取消活动
+            Consumer<Long> afterFunction = cancelActivity.get(activityPlan.getActivityType());
+            if (!Objects.isNull(afterFunction)) {
+                afterFunction.accept(activityPlan.getId());
+            }
         }
 
         activityPlan.setId(activityId);
         activityPlan.setUpdateBy(id);
         activityPlan.setUpdateTime(new Date());
-
         baseMapper.updateById(activityPlan);
         return true;
     }
 
+    @Override
+    public Boolean updateDraftFlag(Long activityId, Integer draftFlag, Long userId) {
+        ActivityPlan activityPlan = new ActivityPlan();
+        activityPlan.setId(activityId);
+        //更改活动状态
+        activityPlan.setDraftFlag(draftFlag);
+        activityPlan.setUpdateBy(userId);
+        updateById(activityPlan);
+        return true;
+    }
+
     private Boolean validParam(ActivityPlanDto activityPlan) {
         if (null == activityPlan) {
             return false;
@@ -320,7 +365,6 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
         activityRegistrationService.save(activityRegistration);
 
         sendMessage(activityPlan.getActivityName(), user.getId());
-
         return true;
     }
 
@@ -335,36 +379,37 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
             } else {
                 activityPlan.setActivityState(0);
                 baseMapper.updateById(activityPlan);
-                //取消所有活动订单
-                cancelActivityOrder(activityPlan);
+
+                //关闭活动
+                Consumer<Long> afterFunction = cancelActivity.get(activityPlan.getActivityType());
+                if (!Objects.isNull(afterFunction)) {
+                    afterFunction.accept(activityPlan.getId());
+                }
             }
         }
+
         //活动发奖
         List<ActivityPlan> rewardList = baseMapper.activityReward();
         for (ActivityPlan activityPlan : rewardList) {
-            List<ActivityUserReward> activityUserRewardList = baseMapper.getUserReward(activityPlan.getId(), activityPlan.getActivityType().getCode());
-            activityUserRewardService.saveBatch(activityUserRewardList);
-            //活动置为已发奖
+            //活动置为已发奖(已完成)
             activityPlan.setRewardFlag(1);
             updateById(activityPlan);
-        }
-    }
 
-    private void cancelActivityOrder(ActivityPlan activityPlan) {
-        OrderSearch query = new OrderSearch();
-        query.setOrderType(OrderTypeEnum.ACTI_REGIST.getCode());
-        query.setGoodType(GoodTypeEnum.ACTI_REGIST.getCode());
-        query.setBizId(activityPlan.getId());
-        List<UserOrderVo> userOrderVos = userOrderService.selectAllList(query);
-        for (UserOrderVo userOrderVo : userOrderVos) {
-            OrderPayReq payReq = new OrderPayReq();
-            payReq.setOrderNo(userOrderVo.getOrderNo());
-            payReq.setUserId(userOrderVo.getUserId());
-            payReq.setReason("活动已结束");
-            userOrderService.orderCancel(payReq);
+            //完成活动
+            Consumer<Long> afterFunction = successActivity.get(activityPlan.getActivityType());
+            if (!Objects.isNull(afterFunction)) {
+                afterFunction.accept(activityPlan.getId());
+            }
+
+
+
         }
     }
 
+    @Override
+    public Boolean saveOrUpdateReward(List<ActivityPlanRewardDto> updateRewardDtoList) {
+        return null;
+    }
 
     /**
      * 参与活动消息

+ 36 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanStandardServiceImpl.java

@@ -0,0 +1,36 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
+import org.springframework.stereotype.Service;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanStandard;
+import com.yonge.cooleshow.biz.dal.dao.ActivityPlanStandardDao;
+import com.yonge.cooleshow.biz.dal.service.ActivityPlanStandardService;
+
+
+@Service
+public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanStandardDao, ActivityPlanStandard> implements ActivityPlanStandardService {
+    private final static Logger log = LoggerFactory.getLogger(ActivityPlanStandardServiceImpl.class);
+
+    @Override
+    public boolean createOrUpdate(ActivityPlanDto activityPlan) {
+        ActivityPlanStandard planExpand = activityPlan.getPlanStandard();
+        if (null == activityPlan.getId()) {
+            planExpand.setId(activityPlan.getId());
+            planExpand.setCreateBy(activityPlan.getUserId());
+            planExpand.setUpdateBy(activityPlan.getUserId());
+            save(planExpand);
+        }else{
+            planExpand.setUpdateBy(activityPlan.getUserId());
+            updateById(planExpand);
+        }
+        return true;
+    }
+
+    @Override
+    public void cancelActivity(Long aLong) {
+
+    }
+}

+ 63 - 31
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java

@@ -1,12 +1,22 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ActivityPlanDao;
+import com.yonge.cooleshow.biz.dal.dao.ActivityRewardChangeStockDao;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
+import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.CacheNameEnum;
+import com.yonge.cooleshow.common.enums.RewardTypeEnum;
+import com.yonge.cooleshow.common.enums.UnitEnum;
+import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.payment.util.DistributedLock;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
@@ -19,7 +29,6 @@ import com.yonge.cooleshow.biz.dal.service.ActivityRewardService;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.Date;
 import java.util.List;
 
 
@@ -28,9 +37,12 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
     private final static Logger log = LoggerFactory.getLogger(ActivityRewardServiceImpl.class);
 
     @Resource
-    private ActivityPlanDao activityPlanDao;
+    private ActivityRewardChangeStockDao changeStockDao;
 
-	@Override
+    @Autowired
+    private RedissonClient redissonClient;
+
+    @Override
     public ActivityRewardVo detail(Long id) {
         return baseMapper.detail(id);
     }
@@ -41,52 +53,72 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
     }
 
     @Override
-    public IPage<ActivityRewardVo> selectPage(IPage<ActivityRewardVo> page, ActivityRewardSearch query){
+    public IPage<ActivityRewardVo> selectPage(IPage<ActivityRewardVo> page, ActivityRewardSearch query) {
         return page.setRecords(baseMapper.selectPage(page, query));
     }
 
     @Override
+    public List<ActivityRewardVo> selectAll(ActivityRewardSearch query) {
+        return baseMapper.selectAll(query);
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean submit(ActivityRewardDto activityReward, SysUser user) {
-        ActivityPlan activityPlan = new ActivityPlan();
-        activityPlan.setId(activityReward.getActivityId());
-        //更改活动状态
-        if(activityReward.getDraftFlag() == 0){
-            activityPlan.setDraftFlag(activityReward.getDraftFlag());
+        if (RewardTypeEnum.ACTUAL.equals(activityReward.getRewardType())) {
+            activityReward.setNum(1);
+            activityReward.setUnit(UnitEnum.PCS);
+        } else if (RewardTypeEnum.PIAMO_ROOM.equals(activityReward.getRewardType())) {
+            activityReward.setUnit(UnitEnum.MINUTE);
         }
-        activityPlan.setUpdateBy(user.getId());
-        activityPlanDao.updateById(activityPlan);
 
-        if(null == activityReward.getId()){
+        if (null == activityReward.getId()) {
             activityReward.setCreateBy(user.getId());
-            return createActivityReward(activityReward);
-        }else{
+            baseMapper.insert(activityReward);
+        } else {
             activityReward.setUpdateBy(user.getId());
-            return updateActivityReward(activityReward);
+            baseMapper.updateById(activityReward);
         }
-    }
-
-    private Boolean createActivityReward(ActivityReward activityReward) {
-        baseMapper.delete(Wrappers.<ActivityReward>lambdaQuery()
-                .eq(ActivityReward::getActivityId, activityReward.getActivityId())
-        );
-        baseMapper.insert(activityReward);
-
-        return true;
-    }
-
-    private Boolean updateActivityReward(ActivityReward activityReward) {
-        baseMapper.updateById(activityReward);
         return true;
     }
 
     @Override
     public List<ActivityReward> getActivityReward(Long activityPlanId) {
-
         return this.lambdaQuery()
-                .eq(ActivityReward::getActivityId,activityPlanId)
+                .eq(ActivityReward::getActivityId, activityPlanId)
                 .list();
 
     }
 
+    @Override
+    public Boolean updateStatus(Long id, Integer status, Long userId) {
+        ActivityReward activityReward = new ActivityReward();
+        activityReward.setId(id);
+        //更改活动状态
+        activityReward.setStatus(status);
+        activityReward.setUpdateBy(userId);
+        updateById(activityReward);
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateStock(ActivityRewardChangeStock changeStock) {
+        return DistributedLock.of(redissonClient)
+                .runIfLockToFunction(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(changeStock.getRewardId())
+                        , (param) -> {
+                            ActivityReward activityReward = getById(param.getRewardId());
+                            Integer stock = (InOrOutEnum.IN.equals(param.getChangeType()))
+                                    ? (activityReward.getStock() + param.getStock()) : (activityReward.getStock() - param.getStock());
+                            if (stock < 0) {
+                                throw new BizException("库存不足");
+                            }
+                            activityReward.setStock(stock);
+                            activityReward.setUpdateBy(param.getCreateBy());
+                            baseMapper.updateById(activityReward);
+
+                            changeStockDao.insert(param);
+                            return true;
+                        }, changeStock, 10l);
+    }
 }

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityPlanRewardVo.java

@@ -0,0 +1,13 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-08-17 11:13:13
+ */
+@ApiModel(value = "ActivityPlanRewardVo对象", description = "活动计划奖品表查询视图对象")
+public class ActivityPlanRewardVo extends ActivityPlanReward{
+	private static final long serialVersionUID = 1L;
+}

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityPlanVo.java

@@ -1,10 +1,15 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlanEvaluation;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanStandard;
+import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.util.List;
+
 /**
  * @Author: liweifan
  * @Data: 2022-08-04 10:19:49
@@ -16,6 +21,12 @@ public class ActivityPlanVo extends ActivityPlan{
 	@ApiModelProperty(value = "活动计划-评测活动拓展")
 	private ActivityPlanEvaluation planEvaluation;
 
+	@ApiModelProperty(value = "活动计划-达标赠送活动拓展")
+	private ActivityPlanStandard planStandard;
+
+	@ApiModelProperty(value = "活动奖品集合")
+	private List<ActivityPlanRewardDto> activityRewardList;
+
 	@ApiModelProperty("参与人数")
 	private Integer registrationNum;
 
@@ -30,6 +41,22 @@ public class ActivityPlanVo extends ActivityPlan{
 		this.planEvaluation = planEvaluation;
 	}
 
+	public ActivityPlanStandard getPlanStandard() {
+		return planStandard;
+	}
+
+	public void setPlanStandard(ActivityPlanStandard planStandard) {
+		this.planStandard = planStandard;
+	}
+
+	public List<ActivityPlanRewardDto> getActivityRewardList() {
+		return activityRewardList;
+	}
+
+	public void setActivityRewardList(List<ActivityPlanRewardDto> activityRewardList) {
+		this.activityRewardList = activityRewardList;
+	}
+
 	public Integer getRegistrationNum() {
 		return registrationNum;
 	}

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityRewardVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -10,4 +11,15 @@ import io.swagger.annotations.ApiModel;
 @ApiModel(value = "ActivityRewardVo对象", description = "活动奖品表查询视图对象")
 public class ActivityRewardVo extends ActivityReward{
 	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty("最后操作人")
+	private String updateByName;
+
+	public String getUpdateByName() {
+		return updateByName;
+	}
+
+	public void setUpdateByName(String updateByName) {
+		this.updateByName = updateByName;
+	}
 }

+ 46 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanEvaluationMapper.xml

@@ -0,0 +1,46 @@
+<?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.yonge.cooleshow.biz.dal.dao.ActivityPlanEvaluationDao">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ActivityPlanEvaluation">
+            <result column="id_" property="id" />
+	        <result column="evaluation_difficulty_" property="evaluationDifficulty" />
+	        <result column="create_time_" property="createTime" />
+	        <result column="create_by_" property="createBy" />
+	        <result column="update_time_" property="updateTime" />
+	        <result column="update_by_" property="updateBy" />
+		</resultMap>
+
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ as id
+        , t.evaluation_difficulty_ as evaluationDifficulty
+        , t.create_time_ as createTime
+        , t.create_by_ as createBy
+        , t.update_time_ as updateTime
+        , t.update_by_ as updateBy
+        </sql>
+
+    <select id="getUserReward" resultType="com.yonge.cooleshow.biz.dal.entity.ActivityUserReward">
+            select
+                a.activity_id_ as activityId,
+                a.evaluation_id_ as bizId,
+                b.user_id_ as userId,
+                c.id_ as rewardId
+            from (
+                select
+                    a.activity_id_,a.evaluation_id_,a.score_,min(b.create_time_) as create_time_
+                from(
+                    select
+                    activity_id_,evaluation_id_, max(score_) as score_
+                    from activity_evaluation_record where activity_id_ = #{activityPlanId} and score_ is not null
+                    group by activity_id_,evaluation_id_
+                ) a
+                left join activity_evaluation_record b on a.activity_id_ = b.activity_id_ and a.evaluation_id_ = b.evaluation_id_ and a.score_ = b.score_
+                GROUP BY a.activity_id_,a.evaluation_id_,a.score_
+            ) a
+            left join activity_evaluation_record b
+                on a.activity_id_ = b.activity_id_ and a.evaluation_id_ = b.evaluation_id_
+                and a.score_ = b.score_ and a.create_time_ = b.create_time_
+            left join activity_reward c on a.activity_id_ = c.activity_id_
+    </select>
+</mapper>

+ 5 - 26
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanMapper.xml

@@ -4,6 +4,7 @@
 	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ActivityPlan">
             <result column="id_" property="id" />
 	        <result column="activity_type_" property="activityType" />
+            <result column="activity_client_" property="activityClient" />
 	        <result column="activity_name_" property="activityName" />
 	        <result column="describe_" property="describe" />
 	        <result column="rule_describe_" property="ruleDescribe" />
@@ -28,6 +29,7 @@
     <sql id="baseColumns">
          t.id_ as id
         , t.activity_type_ as activityType
+        , t.activity_client_ as activityClient
         , t.activity_name_ as activityName
         , t.describe_ as `describe`
         , t.rule_describe_ as ruleDescribe
@@ -83,6 +85,9 @@
             <if test="param.endTime !=null">
                 and t.activity_end_ &lt;= #{param.endTime}
             </if>
+		    <if test="param.activityClient != null">
+                and t.activity_client_ = #{param.activityClient}
+            </if>
         </where>
         order by t.id_ desc
 	</select>
@@ -105,30 +110,4 @@
     <select id="activityReward" resultType="com.yonge.cooleshow.biz.dal.entity.ActivityPlan">
         select <include refid="baseColumns"/> from activity_plan t where t.reward_flag_ = 0 and t.activity_end_ &lt;= now()
     </select>
-
-    <select id="getUserReward" resultType="com.yonge.cooleshow.biz.dal.entity.ActivityUserReward">
-        <if test="null != activityType and 'EVALUATION' == activityType">
-            select
-                a.activity_id_ as activityId,
-                a.evaluation_id_ as bizId,
-                b.user_id_ as userId,
-                c.id_ as rewardId
-            from (
-                select
-                    a.activity_id_,a.evaluation_id_,a.score_,min(b.create_time_) as create_time_
-                from(
-                    select
-                        activity_id_,evaluation_id_, max(score_) as score_
-                    from activity_evaluation_record where activity_id_ = #{activityPlanId} and score_ is not null
-                    group by activity_id_,evaluation_id_
-                ) a
-                left join activity_evaluation_record b on a.activity_id_ = b.activity_id_ and a.evaluation_id_ = b.evaluation_id_ and a.score_ = b.score_
-                GROUP BY a.activity_id_,a.evaluation_id_,a.score_
-            ) a
-            left join activity_evaluation_record b
-                on a.activity_id_ = b.activity_id_ and a.evaluation_id_ = b.evaluation_id_
-                and a.score_ = b.score_ and a.create_time_ = b.create_time_
-            left join activity_reward c on a.activity_id_ = c.activity_id_
-        </if>
-    </select>
 </mapper>

+ 61 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanRewardMapper.xml

@@ -0,0 +1,61 @@
+<?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.yonge.cooleshow.biz.dal.dao.ActivityPlanRewardDao">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward">
+            <result column="id_" property="id" />
+	        <result column="activity_id_" property="activityId" />
+	        <result column="reward_id_" property="rewardId" />
+	        <result column="reward_num_" property="rewardNum" />
+	        <result column="create_time_" property="createTime" />
+		</resultMap>  
+    
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ as id
+        , t.activity_id_ as activityId
+        , t.reward_id_ as rewardId
+        , t.reward_num_ as rewardNum
+        , t.create_time_ as createTime
+        </sql> 
+    
+    <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityPlanRewardVo">
+        SELECT
+            <include refid="baseColumns"/>
+        FROM activity_plan_reward t
+        where t.id_ = #{id}
+    </select>
+    
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityPlanRewardVo">
+		SELECT         
+        	<include refid="baseColumns" />
+		FROM activity_plan_reward t
+	</select>
+
+    <!-- 表字段 -->
+    <sql id="activityRewardColumns">
+        ar.id_ as "activityReward.id"
+        , ar.activity_id_ as "activityReward.activityId"
+        , ar.reward_client_ as "activityReward.rewardClient"
+        , ar.reward_name_ as "activityReward.rewardName"
+        , ar.reward_type_ as "activityReward.rewardType"
+        , ar.reward_describe_ "activityReward.as rewardDescribe"
+        , ar.img_url_ as "activityReward.imgUrl"
+        , ar.stock_ as "activityReward.stock"
+        , ar.num_ as "activityReward.num"
+        , ar.unit_ as "activityReward.unit"
+        , ar.status_ as "activityReward.status"
+        , ar.create_time_ as "activityReward.createTime"
+        , ar.create_by_ as "activityReward.createBy"
+        , ar.update_time_ as "activityReward.updateTime"
+        , ar.update_by_ as "activityReward.updateBy"
+    </sql>
+
+    <select id="queryActivityPlanReward" resultType="com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto">
+        SELECT
+            <include refid="baseColumns" />,
+            <include refid="activityRewardColumns" />
+        FROM activity_plan_reward t
+        left join activity_reward ar on t.reward_id_ = ar.id_
+        where t.activity_id_ = #{activityId}
+    </select>
+</mapper>

+ 23 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanStandardMapper.xml

@@ -0,0 +1,23 @@
+<?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.yonge.cooleshow.biz.dal.dao.ActivityPlanStandardDao">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ActivityPlanStandard">
+            <result column="id_" property="id" />
+	        <result column="activity_id_" property="activityId" />
+	        <result column="condition_" property="condition" />
+	        <result column="calculation_method" property="calculationMethod" />
+	        <result column="create_time_" property="createTime" />
+	        <result column="create_by_" property="createBy" />
+		</resultMap>  
+    
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ as id
+        , t.activity_id_ as activityId
+        , t.condition_ as condition
+        , t.calculation_method as calculationMethod
+        , t.create_time_ as createTime
+        , t.create_by_ as createBy
+        </sql> 
+
+</mapper>

+ 35 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRewardChangeStockMapper.xml

@@ -0,0 +1,35 @@
+<?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.yonge.cooleshow.biz.dal.dao.ActivityRewardChangeStockDao">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock">
+            <result column="id_" property="id" />
+	        <result column="reward_id_" property="rewardId" />
+	        <result column="stock_" property="stock" />
+	        <result column="change_type_" property="changeType" />
+	        <result column="create_time_" property="createTime" />
+	        <result column="create_by_" property="createBy" />
+		</resultMap>  
+    
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ as id
+        , t.reward_id_ as rewardId
+        , t.stock_ as stock
+        , t.change_type_ as changeType
+        , t.create_time_ as createTime
+        , t.create_by_ as createBy
+        </sql> 
+    
+    <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo">
+        SELECT
+            <include refid="baseColumns"/>
+        FROM activity_reward_change_stock t
+        where t.id_ = #{id}
+    </select>
+    
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo">
+		SELECT         
+        	<include refid="baseColumns" />
+		FROM activity_reward_change_stock t
+	</select>
+</mapper>

+ 50 - 18
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRewardMapper.xml

@@ -1,31 +1,43 @@
 <?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.yonge.cooleshow.biz.dal.dao.ActivityRewardDao">
-	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ActivityReward">
-            <result column="id_" property="id" />
-	        <result column="activity_id_" property="activityId" />
-	        <result column="reward_name_" property="rewardName" />
-	        <result column="reward_describe_" property="rewardDescribe" />
-	        <result column="img_url_" property="imgUrl" />
-	        <result column="create_time_" property="createTime" />
-	        <result column="create_by_" property="createBy" />
-            <result column="update_time_" property="updateTime" />
-            <result column="update_by_" property="updateBy" />
-		</resultMap>  
-    
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ActivityReward">
+        <result column="id_" property="id" />
+        <result column="activity_id_" property="activityId" />
+        <result column="reward_client_" property="rewardClient" />
+        <result column="reward_name_" property="rewardName" />
+        <result column="reward_type_" property="rewardType" />
+        <result column="reward_describe_" property="rewardDescribe" />
+        <result column="img_url_" property="imgUrl" />
+        <result column="stock_" property="stock" />
+        <result column="num_" property="num" />
+        <result column="unit_" property="unit" />
+        <result column="status_" property="status" />
+        <result column="create_time_" property="createTime" />
+        <result column="create_by_" property="createBy" />
+        <result column="update_time_" property="updateTime" />
+        <result column="update_by_" property="updateBy" />
+    </resultMap>
+
     <!-- 表字段 -->
     <sql id="baseColumns">
-         t.id_ as id
+        t.id_ as id
         , t.activity_id_ as activityId
+        , t.reward_client_ as rewardClient
         , t.reward_name_ as rewardName
+        , t.reward_type_ as rewardType
         , t.reward_describe_ as rewardDescribe
         , t.img_url_ as imgUrl
+        , t.stock_ as stock
+        , t.num_ as num
+        , t.unit_ as unit
+        , t.status_ as status
         , t.create_time_ as createTime
         , t.create_by_ as createBy
         , t.update_time_ as updateTime
         , t.update_by_ as updateBy
-        </sql> 
-    
+    </sql>
+
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo">
         SELECT
             <include refid="baseColumns"/>
@@ -40,10 +52,30 @@
         where t.activity_id_ = #{id}
     </select>
 
+    <sql id="selectSql">
+        SELECT
+            <include refid="baseColumns" />,
+            u.username_ as updateByName
+        FROM activity_reward t
+        left join sys_user u on t.update_by_ = u.id_
+        <where>
+            <if test="param.rewardName != null and param.rewardName != ''">
+                and t.reward_name_ like concat('%',#{param.rewardName},'%')
+            </if>
+            <if test="param.status != null">
+                and t.status_ = #{param.status}
+            </if>
+            <if test="param.rewardClient != null and param.rewardClient != ''">
+                and INTE_ARRAY(t.reward_client_,#{param.rewardClient})
+            </if>
+        </where>
+    </sql>
 
     <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo">
-		SELECT         
-        	<include refid="baseColumns" />
-		FROM activity_reward t
+        <include refid="selectSql"/>
 	</select>
+
+    <select id="selectAll" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo">
+        <include refid="selectSql"/>
+    </select>
 </mapper>