From 1c13ae0c6d500cf5ec3c3a5f7d4b6e7a617e36ba Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 01 Apr 2021 21:10:37 +0800 Subject: [PATCH] 20210401 签到活动1 --- zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignReceiveRecordAction.java | 21 zq-erp/src/main/java/com/matrix/system/activity/dto/DelRowDto.java | 17 zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java | 14 zq-erp/src/main/java/com/matrix/system/activity/dto/AddSignAwardSetDto.java | 28 zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html | 104 ++ zq-erp/src/main/resources/config/db/increment/签到活动.sql | 127 +++ zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java | 87 ++ zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java | 14 zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignRecordService.java | 22 zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignRecord.java | 66 + zq-erp/src/main/java/com/matrix/system/activity/dto/BeCloseDto.java | 17 zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml | 35 zq-erp/src/main/java/com/matrix/system/activity/dto/BeReadyDto.java | 17 zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java | 14 zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java | 151 +++ zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java | 113 ++ zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html | 649 +++++++++++++++ zq-erp/src/main/java/com/matrix/system/activity/dto/SignSetBasicJsonDto.java | 33 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml | 22 zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java | 11 zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java | 161 +++ zq-erp/src/main/java/com/matrix/system/activity/dto/ActivitiesListDto.java | 22 zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html | 386 +++++++++ zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java | 27 zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml | 41 + zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml | 63 + zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignReceiveRecordService.java | 22 zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignRecordAction.java | 22 zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java | 107 ++ zq-erp/src/main/java/com/matrix/system/activity/constant/ActivitySignConstant.java | 5 30 files changed, 2,416 insertions(+), 2 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java new file mode 100644 index 0000000..1703c16 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java @@ -0,0 +1,113 @@ +package com.matrix.system.activity.action; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.matrix.core.pojo.AjaxResult; +import com.matrix.core.tools.StringUtils; +import com.matrix.system.activity.dto.ActivitiesListDto; +import com.matrix.system.activity.dto.AddSignAwardSetDto; +import com.matrix.system.activity.dto.BeCloseDto; +import com.matrix.system.activity.dto.BeReadyDto; +import com.matrix.system.activity.dto.DelRowDto; +import com.matrix.system.activity.service.ActivitySignAwardSetService; +import com.matrix.system.activity.vo.ActivitiesListVo; +import com.matrix.system.hive.action.util.QueryUtil; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @description 奖品设置表 + * @author yourName + * @date 2021-03-31 16:57 + */ +@RestController +@RequestMapping(value = "admin/activitySignAwardSet") +public class ActivitySignAwardSetAction { + + @Autowired + private ActivitySignAwardSetService activitySignAwardSetService; + + /** + * 新增签到活动 + */ + @PostMapping(value = "/addSignAwardSet") + public @ResponseBody + AjaxResult addSignAwardSet(@RequestBody AddSignAwardSetDto addSignAwardSetDto) { + return activitySignAwardSetService.activitySignAwardSetService(addSignAwardSetDto); + } + + /** + * 查询活动列表 + */ + @ApiOperation(value = "查询活动列表") + @ApiResponses({ + @ApiResponse(code = 200, message = "OK", response = ActivitiesListVo.class) + }) + @PostMapping(value = "/findActivitiesList") + public @ResponseBody + AjaxResult findActivitiesList(@RequestBody ActivitiesListDto activitiesListDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(activitiesListDto); + //排序 + if(StringUtils.isBlank(activitiesListDto.getSort())){ + activitiesListDto.setSort("create_time"); + activitiesListDto.setOrder("desc"); + } + Page<ActivitiesListVo> page = new Page(activitiesListDto.getPageNum(), activitiesListDto.getPageSize()); + IPage<ActivitiesListVo> rows = activitySignAwardSetService.findActivitiesList(page,activitiesListDto); + AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); + return result; + } + + /** + *发布 + */ + @ApiOperation(value = "发布") + @PostMapping(value = "/beReady") + public @ResponseBody + AjaxResult beReady(@RequestBody BeReadyDto beReadyDto) { + return activitySignAwardSetService.beReady(beReadyDto); + } + + /** + *删除 + */ + @ApiOperation(value = "删除") + @PostMapping(value = "/delRow") + public @ResponseBody + AjaxResult delRow(@RequestBody DelRowDto delRowDto) { + return activitySignAwardSetService.delRow(delRowDto); + } + + /** + *关闭 + */ + @ApiOperation(value = "关闭") + @PostMapping(value = "/beClose") + public @ResponseBody + AjaxResult beClose(@RequestBody BeCloseDto beCloseDto) { + return activitySignAwardSetService.beClose(beCloseDto); + } + + + + + + + + + + + + + + + + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignReceiveRecordAction.java b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignReceiveRecordAction.java new file mode 100644 index 0000000..ca94f53 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignReceiveRecordAction.java @@ -0,0 +1,21 @@ +package com.matrix.system.activity.action; +import com.matrix.system.activity.service.ActivitySignReceiveRecordService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @description 领取记录表 + * @author yourName + * @date 2021-03-31 16:57 + */ +@RestController +@RequestMapping(value = "admin/activitySignReceiveRecord") +public class ActivitySignReceiveRecordAction { + + @Autowired + private ActivitySignReceiveRecordService activitySignReceiveRecordService; + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignRecordAction.java b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignRecordAction.java new file mode 100644 index 0000000..4a3b7a6 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignRecordAction.java @@ -0,0 +1,22 @@ +package com.matrix.system.activity.action; + +import com.matrix.system.activity.service.ActivitySignRecordService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @description 签到记录表 + * @author yourName + * @date 2021-03-31 16:57 + */ +@RestController +@RequestMapping(value = "admin/activitySignRecord") +public class ActivitySignRecordAction { + + @Autowired + private ActivitySignRecordService activitySignRecordService; + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/constant/ActivitySignConstant.java b/zq-erp/src/main/java/com/matrix/system/activity/constant/ActivitySignConstant.java new file mode 100644 index 0000000..9b5c750 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/constant/ActivitySignConstant.java @@ -0,0 +1,5 @@ +package com.matrix.system.activity.constant; + +public class ActivitySignConstant { + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java new file mode 100644 index 0000000..4515800 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java @@ -0,0 +1,14 @@ +package com.matrix.system.activity.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.matrix.system.activity.entity.ActivitySignAwardSet; + +/** + * @description 奖品设置表 + * @author yourName + * @date 2021-03-31 16:57 + */ +public interface ActivitySignAwardSetDao extends BaseMapper<ActivitySignAwardSet>{ + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java new file mode 100644 index 0000000..727435b --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignReceiveRecordDao.java @@ -0,0 +1,14 @@ +package com.matrix.system.activity.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.matrix.system.activity.entity.ActivitySignReceiveRecord; + +/** + * @description 领 + * @author yourName + * @date 2021-03-31 16:57 + */ +public interface ActivitySignReceiveRecordDao extends BaseMapper<ActivitySignReceiveRecord>{ + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java new file mode 100644 index 0000000..770622a --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java @@ -0,0 +1,14 @@ +package com.matrix.system.activity.dao; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.matrix.system.activity.entity.ActivitySignRecord; + +/** + * @description 签到记录表 + * @author yourName + * @date 2021-03-31 16:57 + */ +public interface ActivitySignRecordDao extends BaseMapper<ActivitySignRecord>{ + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/ActivitiesListDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/ActivitiesListDto.java new file mode 100644 index 0000000..011454f --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/ActivitiesListDto.java @@ -0,0 +1,22 @@ +package com.matrix.system.activity.dto; + +import com.matrix.core.pojo.BasePageQueryDto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ActivitiesListDto", description = "查询参数") +public class ActivitiesListDto extends BasePageQueryDto { + + @ApiModelProperty(value ="活动名称") + private String hdmc; + + @ApiModelProperty(value ="活动状态") + private Integer hdzt; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/AddSignAwardSetDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/AddSignAwardSetDto.java new file mode 100644 index 0000000..ff857c6 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/AddSignAwardSetDto.java @@ -0,0 +1,28 @@ +package com.matrix.system.activity.dto; + +import com.matrix.system.activity.entity.ActivitySignAwardSet; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@ApiModel(value = "AddSignAwardSetDto", description = "查询参数") +public class AddSignAwardSetDto { + + @ApiModelProperty(value ="活动名称") + private String actName; + @ApiModelProperty(value ="活动编码") + private String actCode; + @ApiModelProperty(value ="活动开始时间") + private Date beginTime; + @ApiModelProperty(value ="活动结束时间") + private Date endTime; + + private SignSetBasicJsonDto signSetBasicJsonDto; + + private List<ActivitySignAwardSet> activitySignAwardSets; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/BeCloseDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/BeCloseDto.java new file mode 100644 index 0000000..ccc0919 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/BeCloseDto.java @@ -0,0 +1,17 @@ +package com.matrix.system.activity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "BeCloseDto", description = "参数") +public class BeCloseDto { + + @ApiModelProperty(value ="活动主表ID") + private Long actId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/BeReadyDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/BeReadyDto.java new file mode 100644 index 0000000..03b3586 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/BeReadyDto.java @@ -0,0 +1,17 @@ +package com.matrix.system.activity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "BeReadyDto", description = "参数") +public class BeReadyDto { + + @ApiModelProperty(value ="活动主表ID") + private Long actId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/DelRowDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/DelRowDto.java new file mode 100644 index 0000000..6c13eef --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/DelRowDto.java @@ -0,0 +1,17 @@ +package com.matrix.system.activity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "DelRowDto", description = "参数") +public class DelRowDto { + + @ApiModelProperty(value ="活动主表ID") + private Long actId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/SignSetBasicJsonDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/SignSetBasicJsonDto.java new file mode 100644 index 0000000..4d5d4c5 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/SignSetBasicJsonDto.java @@ -0,0 +1,33 @@ +package com.matrix.system.activity.dto; + +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "SignSetBasicJsonDto", description = "查询参数") +public class SignSetBasicJsonDto { + + @ApiModelProperty(value ="标题图片") + private String imageUrlTitle; + @ApiModelProperty(value ="头部图片") + private String imageUrlHead; + @ApiModelProperty(value ="按钮图片") + private String imageUrlButton; + @ApiModelProperty(value ="状态图片") + private String imageUrlState; + + @ApiModelProperty(value ="规则内容") + private String ruleExplain; + @ApiModelProperty(value ="字体颜色") + private String typographyColor; + @ApiModelProperty(value ="背景颜色") + private String backgroundColor; + @ApiModelProperty(value ="字体大小") + private Integer typographyNum; + @ApiModelProperty(value ="字体透明度") + private Integer typographyLight; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java new file mode 100644 index 0000000..7c153df --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java @@ -0,0 +1,161 @@ +package com.matrix.system.activity.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.matrix.core.anotations.Extend; +import com.matrix.system.score.entity.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * @description 奖品设置表 + * @author yourName + * @date 2021-03-31 16:57 + */ +@Data +@TableName("activity_sign_award_set") +public class ActivitySignAwardSet extends BaseEntity{ + @Extend + private static final long serialVersionUID = 1L; + + + + + + /** + * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) + */ + + + private Integer awardType; + + /** + * 奖项规则(1:每日奖励(默认)2:累计签到天数) + */ + + + private Integer awardRule; + + /** + * 签到累计天数 + */ + + + private Integer cumulativeDay; + + /** + * 奖项名称 + */ + + + private String awardName; + + /** + * 图片介绍 + */ + + + private String introduceImg; + + /** + * 文字介绍 + */ + + + private String introduceTip; + + /** + * 奖项库存数量 + */ + + + private Integer awardInventoryCnt; + + /** + * 已派发数量 + */ + + + private Integer awardDistributeCnt; + + /** + * 兑奖方式(1:线下兑换2:物流配送3:客服兑换) + */ + + + private Integer awardWay; + + /** + * 操作提示 + */ + + + private String operationTip; + + /** + * 兑奖地址 + */ + + + private String prizeAddress; + + /** + * 兑奖期限开始日期 + */ + + + private Date prizeStartTime; + + /** + * 兑奖期限结束日期 + */ + + + private Date prizeEndTime; + + /** + * 客服微信 + */ + + + private String wechatImg; + + /** + * 积分数量 + */ + + + private Integer scoreCnt; + + /** + * 优惠券ID + */ + + + private String couponId; + + /** + * 商品ID + */ + + + private String goodsId; + + /** + * 活动主表ID + */ + + + private Long activityId; + + /** + * 公司ID + */ + + + private Long companyId; + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java new file mode 100644 index 0000000..e27543d --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java @@ -0,0 +1,87 @@ +package com.matrix.system.activity.entity; + +import com.matrix.core.pojo.EntityDTO; +import com.matrix.system.score.entity.BaseEntity; +import com.matrix.core.anotations.Extend; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; + +/** + * @description 领 + * @author yourName + * @date 2021-03-31 16:57 + */ +@Data +@TableName("activity_sign_receive_record") +public class ActivitySignReceiveRecord extends BaseEntity{ + @Extend + private static final long serialVersionUID = 1L; + + + + + + /** + * openID + */ + + + private String openId; + + /** + * 领取时间 + */ + + + private Date receiveTime; + + /** + * 备注 + */ + + + private String remark; + + /** + * 奖品设置表ID + */ + + + private Long awardId; + + /** + * 是否已领取(1:待领取2:已领取) + */ + + + private Integer state; + + /** + * 核销码 + */ + + + private String writeOffCode; + + /** + * 活动主表ID + */ + + + private Long activityId; + + /** + * 公司ID + */ + + + private Long companyId; + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignRecord.java b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignRecord.java new file mode 100644 index 0000000..9f00d8f --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignRecord.java @@ -0,0 +1,66 @@ +package com.matrix.system.activity.entity; + +import com.matrix.core.pojo.EntityDTO; +import com.matrix.system.score.entity.BaseEntity; +import com.matrix.core.anotations.Extend; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; + +/** + * @description 签到记录表 + * @author yourName + * @date 2021-03-31 16:57 + */ +@Data +@TableName("activity_sign_record") +public class ActivitySignRecord extends BaseEntity{ + @Extend + private static final long serialVersionUID = 1L; + + + + + + /** + * openID + */ + + + private String openId; + + /** + * 签到时间 + */ + + + private Date signTime; + + /** + * 累计签到天数 + */ + + + private Integer cumulativeDay; + + /** + * 活动主表ID + */ + + + private Long activityId; + + /** + * 公司ID + */ + + + private Long companyId; + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java new file mode 100644 index 0000000..5817eb8 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java @@ -0,0 +1,151 @@ +package com.matrix.system.activity.service; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.matrix.core.constance.MatrixConstance; +import com.matrix.core.pojo.AjaxResult; +import com.matrix.core.tools.WebUtil; +import com.matrix.system.activity.dao.ActivitySignAwardSetDao; +import com.matrix.system.activity.dto.ActivitiesListDto; +import com.matrix.system.activity.dto.AddSignAwardSetDto; +import com.matrix.system.activity.dto.BeCloseDto; +import com.matrix.system.activity.dto.BeReadyDto; +import com.matrix.system.activity.dto.DelRowDto; +import com.matrix.system.activity.dto.SignSetBasicJsonDto; +import com.matrix.system.activity.entity.ActivitySignAwardSet; +import com.matrix.system.activity.vo.ActivitiesListVo; +import com.matrix.system.common.bean.SysUsers; +import com.matrix.system.hive.action.util.QueryUtil; +import com.matrix.system.shopXcx.bean.ShopActivities; +import com.matrix.system.shopXcx.dao.ShopActivitiesDao; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * @description 奖品设置表 + * @author yourName + * @date 2021-03-31 16:57 + */ +@Service +public class ActivitySignAwardSetService extends ServiceImpl<ActivitySignAwardSetDao, ActivitySignAwardSet>{ + + @Autowired + private ShopActivitiesDao shopActivitiesDao; + @Autowired + private ActivitySignAwardSetDao activitySignAwardSetDao; + + @Transactional + public AjaxResult activitySignAwardSetService(AddSignAwardSetDto addSignAwardSetDto) { + //获取当前登录人员信息 + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); + Long companyId = user.getCompanyId(); + + //新增活动主表信息 + ShopActivities shopActivities = new ShopActivities(); + shopActivities.setActName(addSignAwardSetDto.getActName()); + shopActivities.setActCode(addSignAwardSetDto.getActCode()); + shopActivities.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE); + shopActivities.setActType(ShopActivities.ACTIVITIES_TYPE_SIGN); + shopActivities.setActStatus(ShopActivities.ACTSTATUS_STATUS_RELEASE); + shopActivities.setActBeginTime(addSignAwardSetDto.getBeginTime()); + shopActivities.setActEndTime(addSignAwardSetDto.getEndTime()); + shopActivities.setCompanyId(companyId); + shopActivities.setCreateBy(user.getSuName()); + shopActivities.setUpdateBy(user.getSuName()); + //将基本信息转换成JSON字符串存储到活动主表的act_content字段 + SignSetBasicJsonDto signSetBasicJsonDto = addSignAwardSetDto.getSignSetBasicJsonDto(); + String json=JSON.toJSONString(signSetBasicJsonDto); + shopActivities.setActContent(json); + int insert = shopActivitiesDao.insert(shopActivities); + if(insert > 0){ + //新增活动奖品信息 + List<ActivitySignAwardSet> activitySignAwardSets = addSignAwardSetDto.getActivitySignAwardSets(); + if(CollUtil.isNotEmpty(activitySignAwardSets)) { + for(ActivitySignAwardSet activitySignAwardSet : activitySignAwardSets) { + activitySignAwardSet.setCreateBy(user.getSuName()); + activitySignAwardSet.setCreateTime(new Date()); + activitySignAwardSet.setUpdateTime(new Date()); + activitySignAwardSet.setUpdateBy(user.getSuName()); + activitySignAwardSet.setCompanyId(companyId); + activitySignAwardSet.setActivityId(shopActivities.getId()); + activitySignAwardSetDao.insert(activitySignAwardSet); + } + } + }else{ + return new AjaxResult(AjaxResult.STATUS_FAIL, "保存失败"); + } + return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功"); + } + + public IPage<ActivitiesListVo> findActivitiesList(Page<ActivitiesListVo> page, + ActivitiesListDto activitiesListDto) { + return shopActivitiesDao.findActivitiesList(page,activitiesListDto); + } + + @Transactional + public AjaxResult beReady(BeReadyDto beReadyDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(beReadyDto); + Long actId = beReadyDto.getActId(); + ShopActivities shopActivity = shopActivitiesDao.selectById(actId); + if(ObjectUtil.isEmpty(shopActivity)) { + return AjaxResult.buildFailInstance("网络不通畅,请刷新页面"); + } + /** + * 未发布状态即使达到活动时间也不进入进行中状态 + */ + //未发布状态点击发布,状态变成未开始,且是开启状态 + shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_READY); + shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_OPEN); + shopActivitiesDao.updateByModel(shopActivity); + return AjaxResult.buildSuccessInstance("操作成功"); + } + + public AjaxResult delRow(DelRowDto delRowDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(delRowDto); + Long actId = delRowDto.getActId(); + ShopActivities shopActivity = shopActivitiesDao.selectById(actId); + if(ObjectUtil.isEmpty(shopActivity)) { + return AjaxResult.buildFailInstance("网络不通畅,请刷新页面"); + } + /** + * 删除状态更新状态为已删除,只能查看活动统计 + */ + shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_DEL); + shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE); + shopActivitiesDao.updateByModel(shopActivity); + return AjaxResult.buildSuccessInstance("操作成功"); + } + + public AjaxResult beClose(BeCloseDto beCloseDto) { + //设置用户公司ID + QueryUtil.setQueryLimitCom(beCloseDto); + Long actId = beCloseDto.getActId(); + ShopActivities shopActivity = shopActivitiesDao.selectById(actId); + if(ObjectUtil.isEmpty(shopActivity)) { + return AjaxResult.buildFailInstance("网络不通畅,请刷新页面"); + } + /** + * 关闭状态 + */ + shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_END); + shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE); + shopActivitiesDao.updateByModel(shopActivity); + return AjaxResult.buildSuccessInstance("操作成功"); + } + + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignReceiveRecordService.java b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignReceiveRecordService.java new file mode 100644 index 0000000..cb5935c --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignReceiveRecordService.java @@ -0,0 +1,22 @@ +package com.matrix.system.activity.service; + + +import org.springframework.stereotype.Service; + +import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao; +import com.matrix.system.activity.entity.ActivitySignReceiveRecord; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @description 领 + * @author yourName + * @date 2021-03-31 16:57 + */ +@Service +public class ActivitySignReceiveRecordService extends ServiceImpl<ActivitySignReceiveRecordDao, ActivitySignReceiveRecord>{ + + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignRecordService.java b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignRecordService.java new file mode 100644 index 0000000..70c96b1 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignRecordService.java @@ -0,0 +1,22 @@ +package com.matrix.system.activity.service; + + +import org.springframework.stereotype.Service; + +import com.matrix.system.activity.dao.ActivitySignRecordDao; +import com.matrix.system.activity.entity.ActivitySignRecord; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @description 签到记录表 + * @author yourName + * @date 2021-03-31 16:57 + */ +@Service +public class ActivitySignRecordService extends ServiceImpl<ActivitySignRecordDao, ActivitySignRecord>{ + + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java new file mode 100644 index 0000000..0ff34af --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java @@ -0,0 +1,107 @@ +package com.matrix.system.activity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class ActivitiesListVo { + + /** + * 活动类型 团购 + */ + public static final int ACTIVITIES_TYPE_GROUP = 1; + + /** + * 活动类型 秒杀 + */ + public static final int ACTIVITIES_TYPE_SECKILL = 2; + + /** + * 活动类型 沙龙 + */ + public static final int ACTIVITIES_TYPE_SALON = 3; + /** + * 活动类型 签到 + */ + public static final int ACTIVITIES_TYPE_SIGN = 4; + + /** + * 活动状态 开启 + */ + public static final int ACTIVITIES_STATUS_OPEN = 1; + + /** + * 活动状态 关闭 + */ + public static final int ACTIVITIES_STATUS_CLOSE = 2; + /** + * 主键 + */ + private Long id; + + + /** + * 活动名称 + */ + @ApiModelProperty(value = "活动名称") + private String actName; + /** + * 活动编码 + */ + @ApiModelProperty(value = "活动编码") + private String actCode; + + + /** + * 活动类型 + */ + @ApiModelProperty(value = "活动类型") + private Integer actType; + + + /** + * 开始时间 + */ + @ApiModelProperty(value = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + private Date actBeginTime; + + + /** + * 结束时间 + */ + @ApiModelProperty(value = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + private Date actEndTime; + /** + * 活动状态 + */ + @ApiModelProperty(value = "活动状态") + private Integer actStatus; + + //未发布 + public static final int ACTSTATUS_STATUS_RELEASE = 1; + //未开始 + public static final int ACTSTATUS_STATUS_READY = 2; + //进行中 + public static final int ACTSTATUS_STATUS_ING = 3; + //已结束 + public static final int ACTSTATUS_STATUS_END = 4; + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 活动说明 + */ + @ApiModelProperty(value = "活动说明") + private String actRemark; + + /** + * 公司ID + */ + @ApiModelProperty(hidden = true) + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java index 2028111..5cbb9a8 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java @@ -30,6 +30,10 @@ * 活动类型 沙龙 */ public static final int ACTIVITIES_TYPE_SALON = 3; + /** + * 活动类型 签到 + */ + public static final int ACTIVITIES_TYPE_SIGN = 4; /** * 活动状态 开启 @@ -50,6 +54,10 @@ * 活动名称 */ private String actName; + /** + * 活动编码 + */ + private String actCode; /** @@ -76,6 +84,17 @@ * 活动状态 */ private Integer actStatus; + + //未发布 + public static final int ACTSTATUS_STATUS_RELEASE = 2; + //未开始 + public static final int ACTSTATUS_STATUS_READY = 2; + //进行中 + public static final int ACTSTATUS_STATUS_ING = 3; + //已结束 + public static final int ACTSTATUS_STATUS_END = 4; + //已删除 + public static final int ACTSTATUS_STATUS_DEL = 5; /** @@ -285,4 +304,12 @@ public void setSalonRecord(ShopActivitiesSalonRecord salonRecord) { this.salonRecord = salonRecord; } + + public String getActCode() { + return actCode; + } + + public void setActCode(String actCode) { + this.actCode = actCode; + } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java index fc86fc5..a72463f 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java @@ -1,11 +1,16 @@ package com.matrix.system.shopXcx.dao; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.matrix.core.pojo.PaginationVO; +import com.matrix.system.activity.dto.ActivitiesListDto; +import com.matrix.system.activity.vo.ActivitiesListVo; import com.matrix.system.shopXcx.api.vo.SalonVO; +import com.matrix.system.shopXcx.bean.ShopActivities; import org.apache.ibatis.annotations.Param; + import java.util.List; import java.util.Map; -import com.matrix.core.pojo.PaginationVO; -import com.matrix.system.shopXcx.bean.ShopActivities; /** * @description 活动主表 @@ -49,4 +54,6 @@ public ShopActivities selectSalonActivityById(@Param("id") Long id); public List<ShopActivities> selectSalonActivityByUser(@Param("record") SalonVO salonVO); + + public IPage<ActivitiesListVo> findActivitiesList(Page<ActivitiesListVo> page, @Param("record")ActivitiesListDto activitiesListDto); } \ No newline at end of file diff --git "a/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" "b/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" new file mode 100644 index 0000000..56f55ba --- /dev/null +++ "b/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" @@ -0,0 +1,127 @@ + +/** + * 奖品设置表 + * @author yourName + * @date 2021-03-31 16:57 + */ + CREATE TABLE activity_sign_award_set( + create_by varchar(100) NOT NULL COMMENT '创建人', + create_time datetime NOT NULL COMMENT '创建时间', + update_by varchar(100) NOT NULL COMMENT '更新人', + update_time datetime NOT NULL COMMENT '更新时间', + id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + + award_type int(4) COMMENT '奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品)', + + award_rule int(4) COMMENT '奖项规则(1:每日奖励(默认)2:累计签到天数)', + + cumulative_day int(4) COMMENT '签到累计天数', + + award_name varchar(100) COMMENT '奖项名称', + + introduce_img varchar(500) COMMENT '图片介绍', + + introduce_tip varchar(500) COMMENT '文字介绍', + + award_inventory_cnt int(4) COMMENT '奖项库存数量', + + award_distribute_cnt int(4) COMMENT '已派发数量', + + award_way int(4) COMMENT '兑奖方式(1:线下兑换2:物流配送3:客服兑换)', + + operation_tip varchar(500) COMMENT '操作提示', + + prize_address varchar(500) COMMENT '兑奖地址', + + prize_start_time datetime COMMENT '兑奖期限开始日期', + + prize_end_time datetime COMMENT '兑奖期限结束日期', + + wechat_img varchar(500) COMMENT '客服微信', + + score_cnt int(4) COMMENT '积分数量', + + coupon_id varchar(100) COMMENT '优惠券ID', + + goods_id varchar(100) COMMENT '商品ID', + + activity_id bigint(20) COMMENT '活动主表ID', + + company_id bigint(20) COMMENT '公司ID', + +PRIMARY KEY(id) +)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='奖品设置表'; + + + +/** + * 领 + * @author yourName + * @date 2021-03-31 16:57 + */ + CREATE TABLE activity_sign_receive_record( + create_by varchar(100) NOT NULL COMMENT '创建人', + create_time datetime NOT NULL COMMENT '创建时间', + update_by varchar(100) NOT NULL COMMENT '更新人', + update_time datetime NOT NULL COMMENT '更新时间', + id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + + open_id varchar(100) COMMENT 'openID', + + receive_time datetime COMMENT '领取时间', + + remark varchar(500) COMMENT '备注', + + award_id bigint(20) COMMENT '奖品设置表ID', + + state int(4) COMMENT '是否已领取(1:待领取2:已领取)', + + write_off_code varchar(100) COMMENT '核销码', + + activity_id bigint(20) COMMENT '活动主表ID', + + company_id bigint(20) COMMENT '公司ID', + +PRIMARY KEY(id) +)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='领取记录表'; + + + + +/** + * 签到记录表 + * @author yourName + * @date 2021-03-31 16:57 + */ + CREATE TABLE activity_sign_record( + create_by varchar(100) NOT NULL COMMENT '创建人', + create_time datetime NOT NULL COMMENT '创建时间', + update_by varchar(100) NOT NULL COMMENT '更新人', + update_time datetime NOT NULL COMMENT '更新时间', + id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + + open_id varchar(100) COMMENT 'openID', + + sign_time datetime COMMENT '签到时间', + + cumulative_day int(4) COMMENT '累计签到天数', + + activity_id bigint(20) COMMENT '活动主表ID', + + company_id bigint(20) COMMENT '公司ID', + +PRIMARY KEY(id) +)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='签到记录表'; + +ALTER TABLE `shop_activities` + ADD COLUMN `act_code` varchar(200) NULL COMMENT '活动编码' AFTER `id`; + + + + + + + + + + diff --git a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml new file mode 100644 index 0000000..9f60550 --- /dev/null +++ b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml @@ -0,0 +1,63 @@ +<?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.matrix.system.activity.dao.ActivitySignAwardSetDao"> + <!-- 定义ActivitySignAwardSet 的复杂关联map --> + <resultMap type="com.matrix.system.activity.entity.ActivitySignAwardSet" id="ActivitySignAwardSetMap"> + <id property="id" column="id" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="awardType" column="award_type" /> + <result property="awardRule" column="award_rule" /> + <result property="cumulativeDay" column="cumulative_day" /> + <result property="awardName" column="award_name" /> + <result property="introduceImg" column="introduce_img" /> + <result property="introduceTip" column="introduce_tip" /> + <result property="awardInventoryCnt" column="award_inventory_cnt" /> + <result property="awardDistributeCnt" column="award_distribute_cnt" /> + <result property="awardWay" column="award_way" /> + <result property="operationTip" column="operation_tip" /> + <result property="prizeAddress" column="prize_address" /> + <result property="prizeStartTime" column="prize_start_time" /> + <result property="prizeEndTime" column="prize_end_time" /> + <result property="wechatImg" column="wechat_img" /> + <result property="scoreCnt" column="score_cnt" /> + <result property="couponId" column="coupon_id" /> + <result property="goodsId" column="goods_id" /> + <result property="activityId" column="activity_id" /> + <result property="companyId" column="company_id" /> + </resultMap> + + + <!-- 定义ActivitySignAwardSet 的简单map ,本map不添加其他的关联属性 --> + <resultMap type="com.matrix.system.activity.entity.ActivitySignAwardSet" id="ActivitySignAwardSetSimpleMap"> + <id property="id" column="id" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="awardType" column="award_type" /> + <result property="awardRule" column="award_rule" /> + <result property="cumulativeDay" column="cumulative_day" /> + <result property="awardName" column="award_name" /> + <result property="introduceImg" column="introduce_img" /> + <result property="introduceTip" column="introduce_tip" /> + <result property="awardInventoryCnt" column="award_inventory_cnt" /> + <result property="awardDistributeCnt" column="award_distribute_cnt" /> + <result property="awardType" column="award_type" /> + <result property="operationTip" column="operation_tip" /> + <result property="prizeAddress" column="prize_address" /> + <result property="prizeStartTime" column="prize_start_time" /> + <result property="prizeEndTime" column="prize_end_time" /> + <result property="wechatImg" column="wechat_img" /> + <result property="scoreCnt" column="score_cnt" /> + <result property="couponId" column="coupon_id" /> + <result property="goodsId" column="goods_id" /> + <result property="activityId" column="activity_id" /> + <result property="companyId" column="company_id" /> + </resultMap> + +</mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml new file mode 100644 index 0000000..10b0853 --- /dev/null +++ b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml @@ -0,0 +1,41 @@ +<?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.matrix.system.activity.dao.ActivitySignReceiveRecordDao"> + <!-- 定义ActivitySignReceiveRecord 的复杂关联map --> + <resultMap type="com.matrix.system.activity.entity.ActivitySignReceiveRecord" id="ActivitySignReceiveRecordMap"> + <id property="id" column="id" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="openId" column="open_id" /> + <result property="receiveTime" column="receive_time" /> + <result property="remark" column="remark" /> + <result property="awardId" column="award_id" /> + <result property="state" column="state" /> + <result property="writeOffCode" column="write_off_code" /> + <result property="activityId" column="activity_id" /> + <result property="companyId" column="company_id" /> + </resultMap> + + + <!-- 定义ActivitySignReceiveRecord 的简单map ,本map不添加其他的关联属性 --> + <resultMap type="com.matrix.system.activity.entity.ActivitySignReceiveRecord" id="ActivitySignReceiveRecordSimpleMap"> + <id property="id" column="id" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="openId" column="open_id" /> + <result property="receiveTime" column="receive_time" /> + <result property="remark" column="remark" /> + <result property="awardId" column="award_id" /> + <result property="state" column="state" /> + <result property="writeOffCode" column="write_off_code" /> + <result property="activityId" column="activity_id" /> + <result property="companyId" column="company_id" /> + </resultMap> + +</mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml new file mode 100644 index 0000000..9d51d49 --- /dev/null +++ b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.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.matrix.system.activity.dao.ActivitySignRecordDao"> + <!-- 定义ActivitySignRecord 的复杂关联map --> + <resultMap type="com.matrix.system.activity.entity.ActivitySignRecord" id="ActivitySignRecordMap"> + <id property="id" column="id" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="openId" column="open_id" /> + <result property="signTime" column="sign_time" /> + <result property="cumulativeDay" column="cumulative_day" /> + <result property="activityId" column="activity_id" /> + <result property="companyId" column="company_id" /> + </resultMap> + + + <!-- 定义ActivitySignRecord 的简单map ,本map不添加其他的关联属性 --> + <resultMap type="com.matrix.system.activity.entity.ActivitySignRecord" id="ActivitySignRecordSimpleMap"> + <id property="id" column="id" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="openId" column="open_id" /> + <result property="signTime" column="sign_time" /> + <result property="cumulativeDay" column="cumulative_day" /> + <result property="activityId" column="activity_id" /> + <result property="companyId" column="company_id" /> + </resultMap> + +</mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml index 78a0c37..d6f7f20 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml @@ -7,6 +7,7 @@ <resultMap type="com.matrix.system.shopXcx.bean.ShopActivities" id="ShopActivitiesMap"> <id property="id" column="id" /> <result property="actName" column="act_name" /> + <result property="actCode" column="act_code" /> <result property="actType" column="act_type" /> <result property="actBeginTime" column="act_begin_time" /> <result property="actEndTime" column="act_end_time" /> @@ -47,6 +48,7 @@ <resultMap type="com.matrix.system.shopXcx.bean.ShopActivities" id="ShopActivitiesSimpleMap"> <id property="id" column="id" /> <result property="actName" column="act_name" /> + <result property="actCode" column="act_code" /> <result property="actType" column="act_type" /> <result property="actBeginTime" column="act_begin_time" /> <result property="actEndTime" column="act_end_time" /> @@ -386,4 +388,24 @@ </if> </if> </select> + + <select id="findActivitiesList" resultType="com.matrix.system.activity.vo.ActivitiesListVo"> + SELECT + * + FROM + shop_activities a + <where> + a.company_id=#{record.companyId} + <if test="record.hdzt != null and record.hdzt != ''"> + and a.act_status=#{record.hdzt} + </if> + <if test="record.hdmc != null and record.hdmc != ''"> + and a.act_name like concat('%',#{record.hdmc},'%') + </if> + </where> + <if test="record.sort !=null"> + order by + a.${record.sort} ${record.order} + </if> + </select> </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html new file mode 100644 index 0000000..8487de0 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html @@ -0,0 +1,386 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + + <!-- 富文本编辑器 --> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.config.js}"></script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.all.js}"> + </script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> + <style> + .panel-body{ + overflow: hidden; + } + .paginationStyle{ + background: #ffffff; + padding: 10px 10px; + margin: 0px 0px 10px 0px; + text-align: right; + } + + .box-card { + width: 240px; + border-radius: 5px; + color: #ffffff; + padding: 2px 0px; + margin-right: 20px; + cursor: pointer; + float: left; + text-align: center; + } + .el-card__body { + padding: 0px; + } + </style> +</head> + +<body> +<div class="panel-body" id="app" v-cloak> + <el-row> + <el-row justify="space-between" type="flex"> + <el-col> + <el-form ref="form" :model="form" inline > + <el-form-item prop="hdmc" > + <el-input v-model="form.hdmc" placeholder="活动名称"></el-input> + </el-form-item> + <el-form-item label="活动状态" prop="hdzt"> + <el-select v-model="form.hdzt" placeholder="活动状态"> + <el-option + v-for="item in hdztList" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <el-button type="primary" @click="searchFormActivitys" >搜索</el-button> + <el-button @click="resetFormActivitys('form')">重置</el-button> + </el-form> + </el-col> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="activitysList.rows" + :height="height" + stripe:true + @sort-change="sortChange" + @selection-change="handleSelectionChange"> + <el-table-column + type="selection"> + </el-table-column> + <el-table-column + prop="actName" + label="活动名称" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="actCode" + label="活动编号" + show-overflow-tooltip> + </el-table-column> + <el-table-column + label="活动类型"> + <template slot-scope="scope"> + <span v-if="scope.row.actType == 1">团购</span> + <span v-if="scope.row.actType == 2">秒杀</span> + <span v-if="scope.row.actType == 3">沙龙</span> + <span v-if="scope.row.actType == 4">每日签到</span> + </template> + </el-table-column> + <el-table-column + label="状态"> + <template slot-scope="scope"> + <span v-if="scope.row.actStatus == 1">未发布</span> + <span v-if="scope.row.actStatus == 2">未开始</span> + <span v-if="scope.row.actStatus == 3">进行中</span> + <span v-if="scope.row.actStatus == 4">已结束</span> + <span v-if="scope.row.actStatus == 5">已删除</span> + </template> + </el-table-column> + <el-table-column + prop="actBeginTime" + label="开始时间" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="actEndTime" + label="结束时间" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="createBy" + label="创建人" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="actRemark" + label="备注" + show-overflow-tooltip> + </el-table-column> + <el-table-column label="操作" width="400"> + <template slot-scope="scope"> + <el-row style="display:flex;"> + <el-button type="primary" v-if="scope.row.actStatus == 1" size="mini" @click="beReady(scope.row)">发布</el-button> + <el-button type="primary" v-if="[1,2,3].includes(scope.row.actStatus)" size="mini">修改</el-button> + <el-button type="primary" v-if="scope.row.actStatus == 3" size="mini">推广</el-button> + <el-button type="primary" v-if="[3,4,5].includes(scope.row.actStatus)" size="mini">活动统计</el-button> + <el-button type="primary" v-if="scope.row.actStatus == 3" @click="beClose(scope.row)" size="mini">关闭</el-button> + <el-button type="danger" v-if="scope.row.actStatus != 5" size="mini" @click="delRow(scope.row)">删除</el-button> + </el-row> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSizeActivitys" + @current-change="changeCurrentPageActivitys" + :current-page="activitysList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="activitysList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="activitysList.total"> + </el-pagination> + </el-row> + </el-row> +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + +<script> + var app = new Vue({ + el: '#app', + data: { + height:'calc(100vh - 200px)', + // 条件查询 + hdztList:[ + {value:'',label:'全部'}, + {value:1,label:'未发布'}, + {value:2,label:'未开始'}, + {value:3,label:'进行中'}, + {value:4,label:'已结束'}, + {value:5,label:'已删除'}, + ], + form:{ + hdmc:'', + hdzt:'', + order:'', + sort:'' + }, + //活动列表 + activitysList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + }, + created: function () { + this.loadInfo(); + }, + mounted: function () { + }, + methods: { + //加载分类 + loadInfo() { + let _this = this; + _this.loadActivitysList(); + }, + //发布 + beReady(row){ + let _this = this; + let actState = row.actStatus; + if(actState !== 1){ + this.$notify({ + title: '提示', + message: '状态为【未发布】才能发布', + type: 'warning' + }); + } + _this.$confirm('确认发布活动吗?', '发布', { + distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别 + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'info' + }).then(() => { + //通过 + let id = row.id; + let obj = { + actId: id, + } + AjaxProxy.requst({ + app: _this, + data:obj, + url: basePath + '/admin/activitySignAwardSet/beReady', + callback: function (data) { + _this.$message.success(data.info); + _this.loadActivitysList(); + } + }); + }).catch(action => { + //不通过 + if(action === 'cancel'){ + console.log("cancel"); + }else{ + //关闭按钮 + console.log("close"); + } + }); + }, + //关闭 + beClose(row){ + let _this = this; + _this.$confirm('确认关闭活动吗?', '关闭', { + distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别 + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'info' + }).then(() => { + //通过 + let id = row.id; + let obj = { + actId: id, + } + AjaxProxy.requst({ + app: _this, + data:obj, + url: basePath + '/admin/activitySignAwardSet/beClose', + callback: function (data) { + _this.$message.success(data.info); + _this.loadActivitysList(); + } + }); + }).catch(action => { + //不通过 + if(action === 'cancel'){ + console.log("cancel"); + }else{ + //关闭按钮 + console.log("close"); + } + }); + }, + //删除 + delRow(row){ + let _this = this; + _this.$confirm('确认删除活动吗?', '删除', { + distinguishCancelAndClose: true,//设置关闭按钮和不通过按钮的区别 + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + //通过 + let id = row.id; + let obj = { + actId: id, + } + AjaxProxy.requst({ + app: _this, + data:obj, + url: basePath + '/admin/activitySignAwardSet/delRow', + callback: function (data) { + _this.$message.success(data.info); + _this.loadActivitysList(); + } + }); + }).catch(action => { + //不通过 + if(action === 'cancel'){ + console.log("cancel"); + }else{ + //关闭按钮 + console.log("close"); + } + }); + }, + + //--活动列表 + loadActivitysList() { + let _this = this; + let data=_this.getRequestParamActivitys(); + data.pageSize=_this.activitysList.pageSize; + data.pageNum=_this.activitysList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/findActivitiesList', + callback: function (data) { + _this.activitysList.rows = data.rows; + _this.activitysList.total = data.total; + } + }); + },//查询参数 + getRequestParamActivitys(){ + let _this = this; + return { + hdmc:_this.form.hdmc, + hdzt:_this.form.hdzt, + order:_this.form.order, + sort:_this.form.sort, + } + }, + //查询 + searchFormActivitys:function(){ + this.activitysList.currentPage=1; + this.loadActivitysList(); + }, + //重置 + resetFormActivitys(formName) { + this.$refs[formName].resetFields(); + }, + changePageSizeActivitys(val) { + this.activitysList.pageSize = val; + this.loadActivitysList(); + }, + changeCurrentPageActivitys(val) { + this.activitysList.currentPage = val; + this.loadActivitysList(); + }, + //排序 + sortChange:function (column){ + if(column.order){ + if(column.order.indexOf("desc")){ + this.form.order="desc"; + }else{ + this.form.order="asc"; + } + this.form.sort=column.prop; + this.loadInfo(); + } + }, + //选择 + handleSelectionChange(val) { + let _this = this; + _this.multipleSelection = val; + }, + } + }) +</script> + +</body> +</html> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html new file mode 100644 index 0000000..d8f0f9a --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html @@ -0,0 +1,104 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + + <!-- 富文本编辑器 --> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.config.js}"></script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.all.js}"> + </script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> + <style> + + .button { + padding: 0; + float: right; + } + + .image { + width: 100%; + display: block; + } + + .clearfix:before, + .clearfix:after { + display: table; + content: ""; + } + + .clearfix:after { + clear: both + } + + .box-card { + padding: 5px 5px; + margin-right: 40px; + } + </style> +</head> + +<body> +<div class="panel-body" id="app" v-cloak> + <el-row> + <el-col :span="6"> + <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> + <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="image"> + <div style="padding: 5px;"> + <span style="padding:5px;font-size: 30px;">每日签到</span> + <div class="bottom clearfix"> + <el-button type="primary" class="button" @click="createSign()" round>马上创建</el-button> + </div> + </div> + </el-card> + </el-col> + </el-row> + +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + +<script> + var app = new Vue({ + el: '#app', + data: {}, + created: function () { + }, + methods: { + //跳转到设置签到活动 + createSign(){ + layer.full(layer.open({ + type: 2, + title: "签到管理", + maxmin: true, + area: [MUI.SIZE_L, '500px'], + content : [ basePath + '/admin/redirect/activity/activity-sign'] + })); + }, + } + }) +</script> + +</body> +</html> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html new file mode 100644 index 0000000..a11dcd7 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html @@ -0,0 +1,649 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + + <!-- 富文本编辑器 --> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.config.js}"></script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.all.js}"> + </script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> + <style> + + .el-aside { + background-color: #D3DCE6; + color: #333; + text-align: center; + } + .el-main { + background-color: #E9EEF3; + color: #333; + } + body > .el-container { + margin-bottom: 1000px; + } + .button { + padding: 5px; + text-align: center; + } + + .imageOne { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + .imageTwo { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + .imageThree { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + + .box-card { + padding: 5px 5px; + } + + </style> +</head> + +<body> +<div class="panel-body" id="app" v-cloak> + <el-form :model="ruleForm" :rules="rules" class="form-horizontal" id="dataform" ref="ruleForm" label-width="120px"> + + <el-container> + <el-aside width="30%"> + <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> + <div @click="uploadImg()" class="imageOne"> + <img v-if="imageUrlTitle" :src="imageUrlTitle" style="width: 100%;"> + <el-button type="primary" v-show="imageUrlTitle == ''" round><span style="font-size: 20px;">标题</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + </div> + <div @click="uploadImg()" class="imageTwo" > + <img v-if="imageUrlHead" :src="imageUrlHead" style="width: 100%;"> + <el-button type="primary" v-show="imageUrlHead == ''" round><span style="font-size: 20px;">头部</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + </div> + <el-row style="display:flex;"> + <el-col> + <div style="padding:5px;font-size: 15px;text-align: left;"><span>您已累计签到<span style="color: red;">3</span>天</span></div> + </el-col> + <el-col> + <div style="padding:5px;font-size: 15px;text-align: right;"><span>签到提醒</span></div> + </el-col> + </el-row> + <div @click="uploadImg()"> + <el-calendar :range="['2019-03-04', '2019-03-24']"></el-calendar> + <img v-if="imageUrlState" :src="imageUrlState" style="width: 100%;"> + <el-button type="primary" v-show="imageUrlState == ''" round><span style="font-size: 20px;">日历签到背景</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + </div> + <div @click="uploadImg()" class="imageThree" > + <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> + </div> + + <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> + </div> + <div class="el-col-sm-24" style="text-align: center;"> + <span style="padding:5px;font-size: 15px;color: red;">(点击,编辑规则内容,背景颜色,字体颜色、大小、透明度)</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">1、每天参与签到可获得积分</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">2、连续签到7天将获得赠送大礼包</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">3、每7天重新开始计算</span> + </div> + </div> + </el-card> + </el-aside> + + <el-main width="70%"> + <div> + <el-tabs v-model="activeName" > + <el-tab-pane label="活动设置" name="first"> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动名称" prop="actName"> + <el-input v-model="ruleForm.actName" placeholder="请输入活动名称"></el-input> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动编码" prop="actCode"> + <el-input v-model.number="ruleForm.actCode" placeholder="请输入最大开团数量"></el-input> + </el-form-item> + </div> + <div class="col-sm-4 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动时间" prop="actTime"> + <div class="block"> + <el-date-picker + v-model="ruleForm.actTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </div> + </el-form-item> + </div> + </el-tab-pane> + + <el-tab-pane label="奖品设置" name="second"> + <el-row style="display:flex;"> + <el-col :span="20"> + <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab"> + <el-tab-pane v-for="(item, index) in editableTabs" :key="item.name" :label="item.title" :name="item.name"> + <el-row v-show="editableTabsValue !== '1'"> + <el-form-item label="签到累计天数"> + <el-input v-model.number="item.content.cumulativeDay" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-row> + <el-row> + <el-form-item label="奖项类型"> + <el-col> + <el-radio-group v-model="item.content.awardType" @change="jxlxChange"> + <el-radio :label="'1'">自定义奖品</el-radio> + <el-radio :label="'2'">积分</el-radio> + <el-radio :label="'3'">优惠券</el-radio> + <el-radio :label="'4'">商品</el-radio> + </el-radio-group> + </el-col> + </el-form-item > + </el-row> + <el-row > + <el-col> + <el-form-item label="奖项名称"> + {{item.content}} + <el-input v-model="item.content.awardName" placeholder="奖项名称"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="图片介绍"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="introduceImgSuccess"> + <img v-if="item.content.introduceImg" :src="item.content.introduceImg" style="max-width: 200px;"> + </el-upload> + </el-form-item> + </el-col> + </el-row> + + <div v-show="item.content.awardType !== '2'"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="奖项库存"> + <el-input v-model="item.content.awardInventoryCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="已派发"> + <el-input v-model="item.content.awardDistributeCnt"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === '1'"> + <el-row > + <el-col> + <el-form-item label="文字介绍"> + <el-input type="textarea" v-model="item.content.introduceTip"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="兑奖方式"> + <el-col> + <el-radio-group v-model="item.content.awardWay" @change="awardWayChange"> + <el-radio :label="'1'">线下兑换</el-radio> + <el-radio :label="'2'">物流配送</el-radio> + <el-radio :label="'3'">客服兑换</el-radio> + </el-radio-group> + </el-col> + </el-form-item > + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="操作提示"> + <el-input v-model="item.content.operationTip"></el-input> + </el-form-item> + </el-col> + </el-row> + <div v-show="item.content.awardWay === '1'"> + <el-row > + <el-col> + <el-form-item label="兑奖地址"> + <el-input v-model="item.content.prizeAddress"></el-input> + </el-form-item> + </el-col> + </el-row> + + </div> + <div v-show="item.content.awardWay === '3'"> + <el-row > + <el-col> + <el-form-item label="客服微信"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="wechatImgSuccess"> + <img v-if="item.content.wechatImg" :src="item.content.wechatImg" style="max-width: 200px;"> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardWay !== '2'"> + <el-row > + <el-col> + <el-form-item label="兑奖期限"> + <div class="block"> + <el-date-picker + v-model="item.content.prizeTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + <div v-show="item.content.awardType === '2'"> + <el-row > + <el-col> + <el-form-item label="积分数量"> + <el-input v-model="item.content.scoreCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === '3'"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="优惠券"> + <el-input v-model="item.content.couponId"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-button type="primary"> + 选择优惠券 + </el-button> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === '4'"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="品项"> + <el-input v-model="item.content.goodsId"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-button type="primary"> + 选择品项 + </el-button> + </el-col> + </el-row> + </div> + </el-tab-pane> + </el-tabs> + </el-col> + <el-col :span="4"> + <el-button type="primary" @click="addTab(editableTabsValue)"> + 新增奖品 + </el-button> + </el-col> + </el-row> + </el-tab-pane> + + <el-tab-pane label="背景图片上传" name="third"> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="标题"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlTitleSuccess"> + <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="头部"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlHeadSuccess"> + <img v-if="imageUrlHead" :src="imageUrlHead" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="日历签到背景"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlStateSuccess"> + <img v-if="imageUrlState" :src="imageUrlState" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="签到按钮"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlButtonSuccess"> + <img v-if="imageUrlButton" :src="imageUrlButton" style="max-width: 300px;"> + <i v-else></i> + </el-upload> + </el-form-item> + </div> + </el-tab-pane> + + <el-tab-pane label="规则说明" name="fourth"> + <div class="col-sm-8 col-sm-offset-1"> + <el-form-item label="规则内容" prop="ruleExplain" style="padding: 10px"> + <el-input type="textarea" v-model="ruleForm.ruleExplain"></el-input> + </el-form-item> + <el-form-item label="背景颜色" style="padding: 10px"> + <el-color-picker v-model="backgroundColor"></el-color-picker> + </el-form-item> + <el-form-item label="字体颜色" style="padding: 10px"> + <el-color-picker v-model="typographyColor"></el-color-picker> + </el-form-item> + <el-form-item label="字体大小" style="padding: 10px"> + <el-input-number v-model="typographyNum" :min="10" :max="20" label="描述文字"></el-input-number> + </el-form-item> + <el-form-item label="字体透明度" style="padding: 10px"> + <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number> + </el-form-item> + </div> + </el-tab-pane> + </el-tabs> + </div> + + <div class="form-group "> + <div class="col-sm-12 text-center"> + <el-button type="primary" @click="dataSubmit('ruleForm')">保存</el-button> + <el-button type="danger" >关闭</el-button> + </div> + </div> + </el-main> + + </el-container> + + </el-form> +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + +<script> + const prize = { + //奖品基本信息 + cumulativeDay:'', + awardType:'1', + awardName:'', + introduceImg:'', + introduceTip:'', + awardInventoryCnt:'', + awardDistributeCnt:'', + awardWay:'1', + awardWayoperationTip:'', + prizeAddress:'', + prizeTime: '', + wechatImg:'', + scoreCnt:'', + couponId:'', + goodsId:'', + } + var app = new Vue({ + el: '#app', + data: { + activeName: 'first', + formLabelWidth: '120px', + //标题图片 + imageUrlTitle: '', + imageUrlHead: '', + imageUrlButton: '', + imageUrlState: '', + + //字体颜色 + typographyColor: '#409EFF', + //背景颜色 + backgroundColor: '#409EFF', + //字体大小 + typographyNum: '5', + //字体透明度 + typographyLight: '50', + //奖品设置 + prize:JSON.parse(JSON.stringify(prize)), + editableTabsValue: '1', + editableTabs: [{ + title: '签到日常奖励', + name: '1', + content: JSON.parse(JSON.stringify(prize)) + }], + tabIndex: 1, + + ruleForm : { + //商品基本信息 + actName : '', + actCode : '', + actTime : '', + //规则说明 + ruleExplain : '', + }, + rules : { + //商品基本信息 + actName : [ + { required: true, message: '请输入活动名称', trigger: 'blur' } + ], + actCode : [ + { required: true, message: '请输入活动编码', trigger: 'blur' } + ], + actTime : [ + { required: true, message: '请选择日期', trigger: 'change' } + ], + ruleExplain : [ + { required: true, message: '请输入规则内容', trigger: 'blur' } + ] + }, + }, + created: function () { + }, + methods: { + dataSubmit : function(formName) { + const _this = this; + let flag = false; + _this.$refs[formName].validate((valid) => { + if (!valid) { + _this.$notify({ + title: '提示', + message: '请完善签到活动信息', + type: 'warning' + }); + flag = true; + return; + } + }); + if (flag) { + return; + } + //活动基本信息 + let signSetBasicJsonDto = { + ruleExplain: _this.ruleForm.ruleExplain, + //字体颜色 + typographyColor: _this.typographyColor, + //背景颜色 + backgroundColor: _this.backgroundColor, + //字体大小 + typographyNum: _this.typographyNum, + //字体透明度 + typographyLight: _this.typographyNum, + //标题图片 + imageUrlTitle: _this.imageUrlTitle, + imageUrlHead: _this.imageUrlHead, + imageUrlButton: _this.imageUrlButton, + imageUrlState: _this.imageUrlState, + } + //奖品信息 + let activitySignAwardSets = []; + for (let i = 0; i < _this.editableTabs.length; i++) { + let prize = _this.editableTabs[i].content; + let activitySignAwardSet = { + cumulativeDay: prize.cumulativeDay, + awardType: prize.awardType, + awardName: prize.awardName, + introduceImg: prize.introduceImg, + introduceTip: prize.introduceTip, + awardInventoryCnt: prize.awardInventoryCnt, + awardDistributeCnt: prize.awardDistributeCnt, + awardWay: prize.awardWay, + awardWayoperationTip: prize.awardWayoperationTip, + prizeAddress: prize.prizeAddress, + wechatImg: prize.wechatImg, + scoreCnt: prize.scoreCnt, + couponId: prize.couponId, + goodsId: prize.goodsId, + prizeStartTime: prize.prizeTime[0], + prizeEndTime: prize.prizeTime[1], + } + activitySignAwardSets.push(activitySignAwardSet); + } + let resultData = { + actName: _this.ruleForm.actName, + actCode: _this.ruleForm.actCode, + beginTime : _this.ruleForm.actTime[0], + endTime : _this.ruleForm.actTime[1], + signSetBasicJsonDto, + activitySignAwardSets, + } + AjaxProxy.requst({ + app: _this, + data: resultData, + url: basePath + '/admin/activitySignAwardSet/addSignAwardSet', + callback: function (data) { + _this.$message({ + message: data.info, + type: 'success', + }); + } + }); + }, + //奖品设置 + addTab(targetName) { + let newTabName = ++this.tabIndex + ''; + this.editableTabs.push({ + title: "商品奖励"+"("+newTabName+")", + name: newTabName, + content: JSON.parse(JSON.stringify(prize)), + }); + this.editableTabsValue = newTabName; + }, + removeTab(targetName) { + let tabs = this.editableTabs; + let activeName = this.editableTabsValue; + if(activeName === '1' || targetName === '1'){ + this.$notify({ + title: '提示', + message: '【签到日常奖励】不能删除', + type: 'warning' + }); + }else{ + if (activeName === targetName) { + tabs.forEach((tab, index) => { + if (tab.name === targetName && tab.title !== "签到日常奖励") { + let nextTab = tabs[index + 1] || tabs[index - 1]; + if (nextTab) { + activeName = nextTab.name; + } + } + }); + } + this.editableTabsValue = activeName; + this.editableTabs = tabs.filter(tab => tab.name !== targetName); + this.tabIndex = this.editableTabs.length; + } + }, + //切换奖项类型,显示不同内容 + jxlxChange(val){ + let _this = this; + _this.isShow=val; + }, + //切换兑奖方式,显示不同内容 + awardWayChange(val){ + let _this = this; + _this.isShow=val; + }, + //跳转到图片上传 + uploadImg(){ + this.activeName = 'third'; + }, + //跳转到规则说明 + gzsmSet(){ + this.activeName = 'fourth'; + }, + //标题图片 + imageUrlTitleSuccess(res, file) { + this.imageUrlTitle = res.path; + }, + imageUrlHeadSuccess(res, file) { + this.imageUrlHead = res.path; + }, + imageUrlButtonSuccess(res, file) { + this.imageUrlButton = res.path; + }, + imageUrlStateSuccess(res, file) { + this.imageUrlState = res.path; + }, + //奖品设置的图片介绍 + introduceImgSuccess(res, file) { + this.editableTabs[this.tabIndex-1].content.introduceImg = res.path; + // this.prize.introduceImg = URL.createObjectURL(file.raw); + }, + //奖品设置的客服微信 + wechatImgSuccess(res, file) { + this.editableTabs[this.tabIndex-1].content.wechatImg = res.path; + }, + } + }) +</script> + +</body> +</html> \ No newline at end of file -- Gitblit v1.9.1