记得上下班打卡 | git大法好,push需谨慎

Commit 4b8b616f authored by jiangxiulong's avatar jiangxiulong

活动管理

parent adfa65d6
......@@ -29,6 +29,12 @@
<version>4.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-sweet-do</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
package com.liquidnet.service.sweet.dto.param.admin;
import com.liquidnet.service.sweet.entity.SweetIntegralActivity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* SweetIntegralActivityFromParam
* </p>
*
* @author jiangxiulong
* @since 2021-10-20
*/
@Data
@ApiModel(value = "SweetIntegralActivityFromParam", description = "积分活动创建活动入参")
public class SweetIntegralActivityFromParam implements Serializable, Cloneable {
private static final long serialVersionUID = -648510827144997014L;
@ApiModelProperty(value = "活动id[创建不传]", example = "1")
private String integralActivityId;
@ApiModelProperty(required = true, value = "活动名称")
private String activityTitle;
@ApiModelProperty(required = true, value = "活动图片")
private String activityImg;
@ApiModelProperty(required = true, value = "活动类型 1转盘")
private Integer activityType;
@ApiModelProperty(required = true, value = "活动时间类型 1长期 2开始结束时间")
private Integer timeType;
@ApiModelProperty(value = "如果活动有时间限制 开始时间")
private LocalDateTime startTime;
@ApiModelProperty(value = "如果活动有时间限制 结束时间")
private LocalDateTime endTime;
@ApiModelProperty(required = true, value = "快递费用类型 1包邮 2到付")
private Integer expressFeeType;
@ApiModelProperty(required = true, value = "活动规则")
private String activityRules;
@ApiModelProperty(required = true, value = "是否上线 1未上线 2已上线")
private Integer isOnline;
@ApiModelProperty(value = "奖品列表")
private List<SweetIntegralActivityPrizeFormParam> prizeList;
private static final SweetIntegralActivityFromParam obj = new SweetIntegralActivityFromParam();
public static SweetIntegralActivityFromParam getNew() {
try {
return (SweetIntegralActivityFromParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetIntegralActivityFromParam();
}
}
public SweetIntegralActivity copy(SweetIntegralActivityFromParam source) {
SweetIntegralActivity sweetIntegralActivity = SweetIntegralActivity.getNew();
if (null == source) return null;
sweetIntegralActivity.setIntegralActivityId(source.getIntegralActivityId());
sweetIntegralActivity.setActivityTitle(source.getActivityTitle());
sweetIntegralActivity.setActivityImg(source.getActivityImg());
sweetIntegralActivity.setActivityType(source.getActivityType());
sweetIntegralActivity.setStartTime(source.getStartTime());
sweetIntegralActivity.setEndTime(source.getEndTime());
sweetIntegralActivity.setExpressFeeType(source.getExpressFeeType());
sweetIntegralActivity.setActivityRules(source.getActivityRules());
sweetIntegralActivity.setIsOnline(source.getIsOnline());
return sweetIntegralActivity;
}
}
\ No newline at end of file
package com.liquidnet.service.sweet.dto.param.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* SweetIntegralActivityListSearchParam
* </p>
*
* @author jiangxiulong
* @since 2021-10-20
*/
@Data
@ApiModel(value = "SweetIntegralActivityListSearchParam", description = "积分活动列表搜索入参")
public class SweetIntegralActivityListSearchParam implements Serializable {
private static final long serialVersionUID = 6917807562233084828L;
@ApiModelProperty(position = 11, value = "活动名称")
private String activityTitle;
@ApiModelProperty(value = "页数", example = "0")
private Integer pageSize;
@ApiModelProperty(value = "数量", example = "20")
private Integer pageNum;
}
package com.liquidnet.service.sweet.dto.param.admin;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* SweetIntegralActivityPrizeFormParam
* </p>
*
* @author jiangxiulong
* @since 2021-10-21
*/
@Data
@ApiModel(value = "SweetIntegralActivityPrizeFormParam", description = "积分活动创建奖品入参")
public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneable {
private static final long serialVersionUID = 9194454546358707259L;
@ApiModelProperty(value = "奖品id 创建不传", example = "")
private String prizeId;
@ApiModelProperty(value = "活动id[创建不传]", example = "1")
private String integralActivityId;
@ApiModelProperty(required = true, value = "奖品名称", example = "")
private String prizeTitle;
@ApiModelProperty(required = true, value = "奖品图片", example = "")
private String prizeImg;
@ApiModelProperty(required = true, value = "奖品类型 1谢谢惠顾 2积分 3优惠券 4实物", example = "")
private Integer prizeType;
@ApiModelProperty(value = "关联id 如商品id 券id", example = "")
private String relationId;
@ApiModelProperty(required = true, value = "奖品数量", example = "")
private Integer prizeNum;
@ApiModelProperty(required = true, value = "限制的中奖人数", example = "")
private Integer winnersNum;
@ApiModelProperty(required = true, value = "中奖概率", example = "")
private BigDecimal winningProbability;
private static final SweetIntegralActivityPrizeFormParam obj = new SweetIntegralActivityPrizeFormParam();
public static SweetIntegralActivityPrizeFormParam getNew() {
try {
return (SweetIntegralActivityPrizeFormParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetIntegralActivityPrizeFormParam();
}
}
public SweetIntegralActivityPrize copy(SweetIntegralActivityPrizeFormParam source) {
SweetIntegralActivityPrize sweetIntegralActivityPrize = SweetIntegralActivityPrize.getNew();
if (null == source) return null;
sweetIntegralActivityPrize.setIntegralActivityId(source.getIntegralActivityId());
sweetIntegralActivityPrize.setPrizeId(source.getPrizeId());
sweetIntegralActivityPrize.setPrizeTitle(source.getPrizeTitle());
sweetIntegralActivityPrize.setPrizeImg(source.getPrizeImg());
sweetIntegralActivityPrize.setPrizeType(source.getPrizeType());
sweetIntegralActivityPrize.setRelationId(source.getRelationId());
sweetIntegralActivityPrize.setPrizeNum(source.getPrizeNum());
sweetIntegralActivityPrize.setWinnersNum(source.getWinnersNum());
sweetIntegralActivityPrize.setWinningProbability(source.getWinningProbability());
return sweetIntegralActivityPrize;
}
}
package com.liquidnet.service.sweet.dto.vo.admin;
import com.liquidnet.service.sweet.entity.SweetIntegralActivity;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* SweetIntegralActivityVo
* </p>
*
* @author jiangxiulong
* @since 2021-10-20
*/
@Data
@ApiModel
public class SweetIntegralActivityVo implements Serializable, Cloneable {
private static final long serialVersionUID = 1599981143175023116L;
@ApiModelProperty(value = "活动id")
private String integralActivityId;
@ApiModelProperty(value = "活动名称")
private String activityTitle;
@ApiModelProperty(value = "活动图片")
private String activityImg;
@ApiModelProperty(value = "活动类型 1转盘")
private Integer activityType;
@ApiModelProperty(value = "活动时间类型 1长期 2开始结束时间")
private Integer timeType;
@ApiModelProperty(value = "如果活动有时间限制 开始时间")
private LocalDateTime startTime;
@ApiModelProperty(value = "如果活动有时间限制 结束时间")
private LocalDateTime endTime;
@ApiModelProperty(value = "快递费用类型 1包邮 2到付")
private Integer expressFeeType;
@ApiModelProperty(value = "活动规则")
private String activityRules;
@ApiModelProperty(value = "是否上线 1未上线 2已上线")
private Integer isOnline;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createdAt;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updatedAt;
@ApiModelProperty(value = "奖品列表")
private List<SweetIntegralActivityPrize> prizeList;
private static final SweetIntegralActivityVo obj = new SweetIntegralActivityVo();
public static SweetIntegralActivityVo getNew() {
try {
return (SweetIntegralActivityVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetIntegralActivityVo();
}
}
public SweetIntegralActivityVo copy(SweetIntegralActivity source) {
if (null == source) return this;
this.setIntegralActivityId(source.getIntegralActivityId());
this.setActivityTitle(source.getActivityTitle());
this.setActivityImg(source.getActivityImg());
this.setActivityType(source.getActivityType());
this.setStartTime(source.getStartTime());
this.setEndTime(source.getEndTime());
this.setExpressFeeType(source.getExpressFeeType());
this.setActivityRules(source.getActivityRules());
this.setIsOnline(source.getIsOnline());
this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt());
return this;
}
}
......@@ -111,6 +111,12 @@
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-sweet-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
......
package com.liquidnet.client.admin.web.controller.zhengzai.sweet;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.zhengzai.sweet.service.ISweetIntegralActivityService;
import com.liquidnet.service.sweet.dto.param.admin.SweetIntegralActivityFromParam;
import com.liquidnet.service.sweet.dto.param.admin.SweetIntegralActivityListSearchParam;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityVo;
import com.liquidnet.service.sweet.entity.SweetIntegralActivity;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <p>
......@@ -13,8 +27,90 @@ import org.springframework.web.bind.annotation.RestController;
* @author jiangxiulong
* @since 2021-10-20
*/
@Api(tags = "积分活动管理")
@RestController
@RequestMapping("/sweetIntegralActivity")
public class SweetIntegralActivityController {
public class SweetIntegralActivityController extends BaseController {
private String prefix = "zhengzai/sweet/integralActivity";
@Autowired
private ISweetIntegralActivityService iSweetIntegralActivityService;
@GetMapping("listView")
@ApiOperation(value = "积分活动列表view")
public String listView() {
return prefix + "/list";
}
@GetMapping("formView")
@ApiOperation(value = "积分活动添加编辑view")
public String formView () {
return prefix + "/form";
}
@Log(title = "积分活动列表数据", businessType = BusinessType.LIST)
@RequiresPermissions("admin:sweetIntegralActivity:list")
@ApiOperation(value = "积分活动列表数据")
@GetMapping("list")
@ResponseBody
public TableDataInfo list(SweetIntegralActivityListSearchParam listParam) {
PageInfo<SweetIntegralActivity> result = iSweetIntegralActivityService.list(listParam);
return getDataTable(result.getList());
}
@Log(title = "积分活动上下线", businessType = BusinessType.UPDATE)
@RequiresPermissions("admin:sweetIntegralActivity:isOnline")
@ApiOperation(value = "积分活动上下线")
@PutMapping("isOnline")
@ResponseBody
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "integralActivityId", value = "活动id"),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "isOnline", value = "是否上线 1下线 2上线"),
})
public AjaxResult isOnline(@RequestParam("integralActivityId") String integralActivityId, @RequestParam("isOnline") Integer isOnline) {
Integer result = iSweetIntegralActivityService.isOnline(integralActivityId, isOnline);
if (result > 0) {
return success("操作成功");
} else {
return error("操作失败");
}
}
@Log(title = "积分活动详情", businessType = BusinessType.DETAIL)
@GetMapping("details")
@ApiOperation(value = "积分活动详情")
@ResponseBody
@ApiImplicitParams({
@ApiImplicitParam(type = "query", required = true, dataType = "String", name = "integralActivityId", value = "活动id"),
})
public AjaxResult details(@RequestParam("integralActivityId") String integralActivityId) {
SweetIntegralActivityVo result = iSweetIntegralActivityService.detail(integralActivityId);
return AjaxResult.success(result);
}
@Log(title = "积分活动创建", businessType = BusinessType.INSERT)
@PostMapping("")
@ApiOperation(value = "积分活动创建")
@ResponseBody
public AjaxResult create(SweetIntegralActivityFromParam param) {
Integer result = iSweetIntegralActivityService.createForm(param);
if (result > 0) {
return success("操作成功");
} else {
return error("操作失败");
}
}
@Log(title = "积分活动编辑", businessType = BusinessType.UPDATE)
@PutMapping("")
@ApiOperation(value = "积分活动编辑")
@ResponseBody
public AjaxResult update(SweetIntegralActivityFromParam param) {
Integer result = iSweetIntegralActivityService.updateForm(param);
if (result > 0) {
return success("操作成功");
} else {
return error("操作失败");
}
}
}
......@@ -130,6 +130,12 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-sweet-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.liquidnet.client.admin.zhengzai.sweet.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.sweet.dto.param.admin.SweetIntegralActivityFromParam;
import com.liquidnet.service.sweet.dto.param.admin.SweetIntegralActivityListSearchParam;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityVo;
import com.liquidnet.service.sweet.entity.SweetIntegralActivity;
/**
......@@ -13,4 +17,13 @@ import com.liquidnet.service.sweet.entity.SweetIntegralActivity;
*/
public interface ISweetIntegralActivityService extends IService<SweetIntegralActivity> {
PageInfo<SweetIntegralActivity> list(SweetIntegralActivityListSearchParam listParam);
Integer isOnline(String integralActivityId, Integer isOnline);
SweetIntegralActivityVo detail(String integralActivityId);
Integer createForm(SweetIntegralActivityFromParam param);
Integer updateForm(SweetIntegralActivityFromParam param);
}
package com.liquidnet.client.admin.zhengzai.sweet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.sweet.service.ISweetIntegralActivityService;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.sweet.dto.param.admin.SweetIntegralActivityFromParam;
import com.liquidnet.service.sweet.dto.param.admin.SweetIntegralActivityListSearchParam;
import com.liquidnet.service.sweet.dto.param.admin.SweetIntegralActivityPrizeFormParam;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityVo;
import com.liquidnet.service.sweet.entity.SweetIntegralActivity;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrize;
import com.liquidnet.service.sweet.mapper.SweetIntegralActivityMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.sweet.mapper.SweetIntegralActivityPrizeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 积分活动表 服务实现类
......@@ -17,4 +32,81 @@ import org.springframework.stereotype.Service;
@Service
public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralActivityMapper, SweetIntegralActivity> implements ISweetIntegralActivityService {
@Autowired
SweetIntegralActivityMapper sweetIntegralActivityMapper;
@Autowired
SweetIntegralActivityPrizeMapper sweetIntegralActivityPrizeMapper;
@Override
public PageInfo<SweetIntegralActivity> list(SweetIntegralActivityListSearchParam listParam) {
PageHelper.startPage(listParam.getPageNum(), listParam.getPageSize());
LambdaQueryWrapper<SweetIntegralActivity> lambdaQueryWrapper = Wrappers.lambdaQuery(SweetIntegralActivity.class);
if (!listParam.getActivityTitle().isEmpty()) {
lambdaQueryWrapper.like(SweetIntegralActivity::getActivityTitle, listParam.getActivityTitle());
}
List<SweetIntegralActivity> sweetIntegralActivities = sweetIntegralActivityMapper.selectList(lambdaQueryWrapper);
// TODO: 2021/10/20 查询奖品数量 中奖数量计算展示 返回vo
return new PageInfo(sweetIntegralActivities);
}
@Override
public Integer isOnline(String integralActivityId, Integer isOnline) {
SweetIntegralActivity aNew = SweetIntegralActivity.getNew();
aNew.setIsOnline(isOnline);
int result = sweetIntegralActivityMapper.update(
aNew,
Wrappers.lambdaUpdate(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId)
);
// TODO: 2021/10/20 更新缓存
return result;
}
@Override
public SweetIntegralActivityVo detail(String integralActivityId) {
SweetIntegralActivity sweetIntegralActivity = sweetIntegralActivityMapper.selectOne(
Wrappers.lambdaQuery(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId)
);
SweetIntegralActivityVo integralActivityVo = SweetIntegralActivityVo.getNew().copy(sweetIntegralActivity);
List<SweetIntegralActivityPrize> sweetIntegralActivityPrizes = sweetIntegralActivityPrizeMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId)
);
integralActivityVo.setPrizeList(sweetIntegralActivityPrizes);
return integralActivityVo;
}
@Override
public Integer createForm(SweetIntegralActivityFromParam param) {
SweetIntegralActivity sweetIntegralActivity = SweetIntegralActivityFromParam.getNew().copy(param);
sweetIntegralActivity.setIntegralActivityId(IDGenerator.nextSnowId());
int insert = sweetIntegralActivityMapper.insert(sweetIntegralActivity);
List<SweetIntegralActivityPrizeFormParam> prizeList = param.getPrizeList();
for (SweetIntegralActivityPrizeFormParam prize : prizeList) {
SweetIntegralActivityPrize sweetIntegralActivityPrize = SweetIntegralActivityPrizeFormParam.getNew().copy(prize);
sweetIntegralActivityPrize.setPrizeId(IDGenerator.nextSnowId());
sweetIntegralActivityPrizeMapper.insert(sweetIntegralActivityPrize);
}
// TODO: 2021/10/20 增加redis处理
return insert;
}
@Override
public Integer updateForm(SweetIntegralActivityFromParam param) {
SweetIntegralActivity sweetIntegralActivity = SweetIntegralActivityFromParam.getNew().copy(param);
sweetIntegralActivity.setUpdatedAt(LocalDateTime.now());
int update = sweetIntegralActivityMapper.update(
sweetIntegralActivity,
Wrappers.lambdaUpdate(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, param.getIntegralActivityId())
);
List<SweetIntegralActivityPrizeFormParam> prizeList = param.getPrizeList();
for (SweetIntegralActivityPrizeFormParam prize : prizeList) {
SweetIntegralActivityPrize sweetIntegralActivityPrize = SweetIntegralActivityPrizeFormParam.getNew().copy(prize);
sweetIntegralActivityPrize.setUpdatedAt(LocalDateTime.now());
sweetIntegralActivityPrizeMapper.update(
sweetIntegralActivityPrize,
Wrappers.lambdaUpdate(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getPrizeId, prize.getPrizeId())
);
}
// TODO: 2021/10/20 增加redis处理
return update;
}
}
......@@ -11,5 +11,4 @@
<artifactId>liquidnet-service-sweet-do</artifactId>
</project>
\ No newline at end of file
......@@ -2,8 +2,10 @@ package com.liquidnet.service.sweet.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -85,6 +87,7 @@ public class SweetIntegralActivity implements Serializable, Cloneable {
private LocalDateTime updatedAt;
private static final SweetIntegralActivity obj = new SweetIntegralActivity();
public static SweetIntegralActivity getNew() {
try {
return (SweetIntegralActivity) obj.clone();
......@@ -93,5 +96,4 @@ public class SweetIntegralActivity implements Serializable, Cloneable {
}
}
}
package com.liquidnet.service.sweet.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -81,6 +84,7 @@ public class SweetIntegralActivityPrize implements Serializable, Cloneable {
private LocalDateTime updatedAt;
private static final SweetIntegralActivityPrize obj = new SweetIntegralActivityPrize();
public static SweetIntegralActivityPrize getNew() {
try {
return (SweetIntegralActivityPrize) obj.clone();
......@@ -89,5 +93,4 @@ public class SweetIntegralActivityPrize implements Serializable, Cloneable {
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment