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

Commit af4f30c5 authored by jiangxiulong's avatar jiangxiulong

积分 admin relation

parent 8f48d629
package com.liquidnet.client.admin.web.controller.zhengzai.sweet;
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.SweetIntegralActivityDto;
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 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* <p>
* 积分活动表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2021-10-20
*/
@Api(tags = "积分活动管理")
@Validated
@Controller
@RequestMapping("/sweet/integralActivity")
public class SweetIntegralActivityPrizeRelationController extends BaseController {
private String prefix = "zhengzai/sweet/integralActivity";
@Value("${liquidnet.client.admin.platformUrl}")
private String platformUrl;
@Autowired
private ISweetIntegralActivityService iSweetIntegralActivityService;
@Log(title = "积分活动创建", businessType = BusinessType.INSERT)
@RequiresPermissions("sweet:integralActivity:create")
@PostMapping("create")
@ApiOperation(value = "积分活动创建")
@ResponseBody
public AjaxResult create(@Valid @RequestBody SweetIntegralActivityFromParam param) {
Integer result = iSweetIntegralActivityService.createForm(param);
if (result > 0) {
return success("操作成功");
} else {
return error("操作失败");
}
}
@Log(title = "积分活动编辑", businessType = BusinessType.UPDATE)
@RequiresPermissions("sweet:integralActivity:update")
@PutMapping("update")
@ApiOperation(value = "积分活动编辑")
@ResponseBody
public AjaxResult update(@Valid @RequestBody SweetIntegralActivityFromParam param) {
Integer result = iSweetIntegralActivityService.updateForm(param);
if (result > 0) {
return success("操作成功");
} else {
return error("操作失败");
}
}
@Log(title = "积分活动上下线", businessType = BusinessType.UPDATE)
@RequiresPermissions("sweet:integralActivity: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") @NotEmpty(message = "integralActivityId不能为空") String integralActivityId,
@RequestParam("isOnline") @NotNull(message = "isOnline不能为空") @Min(value = 1, message = "isOnline无效") @Max(value = 2, message = "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.LIST)
@RequiresPermissions("sweet:integralActivity:list")
@ApiOperation(value = "积分活动列表数据")
@PostMapping("list")
@ResponseBody
public TableDataInfo list(SweetIntegralActivityListSearchParam listParam) {
PageInfo<SweetIntegralActivityDto> result = iSweetIntegralActivityService.list(listParam);
return getDataTable(result.getList());
}
@GetMapping("listView")
@ApiOperation(value = "积分活动列表view")
public String listView() {
return prefix + "/list";
}
@GetMapping("formView")
@ApiOperation(value = "积分活动添加编辑view")
public String formView(ModelMap mmap) {
mmap.put("platformUrl", platformUrl);
return prefix + "/form";
}
}
package com.liquidnet.client.admin.zhengzai.sweet.service;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.sweet.dto.SweetIntegralActivityDto;
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.SweetIntegralActivityPrizeRelation;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 积分活动奖品里关联多奖品表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-12-02
*/
public interface ISweetIntegralActivityPrizeRelationService extends IService<SweetIntegralActivityPrizeRelation> {
Integer createForm(SweetIntegralActivityFromParam param);
Integer updateForm(SweetIntegralActivityFromParam param);
Integer isOnline(String integralActivityId, Integer isOnline);
SweetIntegralActivityVo detail(String integralActivityId);
PageInfo<SweetIntegralActivityDto> list(SweetIntegralActivityListSearchParam listParam);
}
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.ISweetIntegralActivityPrizeRelationService;
import com.liquidnet.client.admin.zhengzai.sweet.utils.SweetObjectAdminUtil;
import com.liquidnet.client.admin.zhengzai.sweet.utils.SweetRedisAdminUtils;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.sweet.dto.SweetIntegralActivityDto;
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.param.admin.SweetIntegralActivityPrizeRelationFormParam;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityVo;
import com.liquidnet.service.sweet.entity.SweetIntegralActivity;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrize;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrizeRelation;
import com.liquidnet.service.sweet.mapper.SweetIntegralActivityDrawMapper;
import com.liquidnet.service.sweet.mapper.SweetIntegralActivityMapper;
import com.liquidnet.service.sweet.mapper.SweetIntegralActivityPrizeMapper;
import com.liquidnet.service.sweet.mapper.SweetIntegralActivityPrizeRelationMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.sweet.utils.SweetNewObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 积分活动奖品里关联多奖品表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-12-02
*/
@Service
public class SweetIntegralActivityPrizeRelationServiceImpl extends ServiceImpl<SweetIntegralActivityPrizeRelationMapper, SweetIntegralActivityPrizeRelation> implements ISweetIntegralActivityPrizeRelationService {
@Autowired
private SweetIntegralActivityMapper sweetIntegralActivityMapper;
@Autowired
private SweetIntegralActivityPrizeMapper sweetIntegralActivityPrizeMapper;
@Autowired
private SweetIntegralActivityDrawMapper sweetIntegralActivityDrawMapper;
@Autowired
private SweetIntegralActivityPrizeRelationMapper relationMapper;
@Autowired
private SweetRedisAdminUtils sweetRedisAdminUtils;
@Override
public Integer createForm(SweetIntegralActivityFromParam param) {
try {
SweetIntegralActivity sweetIntegralActivity = SweetIntegralActivityFromParam.getNew().copy(param);
String integralActivityId = IDGenerator.nextSnowId();
sweetIntegralActivity.setIntegralActivityId(integralActivityId);
int insert = sweetIntegralActivityMapper.insert(sweetIntegralActivity);
List<SweetIntegralActivityPrizeFormParam> prizeList = param.getPrizeList();
if (!CollectionUtils.isEmpty(prizeList)) {
for (SweetIntegralActivityPrizeFormParam prize : prizeList) {
SweetIntegralActivityPrize sweetIntegralActivityPrize = SweetIntegralActivityPrizeFormParam.getNew().copy(prize);
String prizeId = IDGenerator.nextSnowId();
sweetIntegralActivityPrize.setPrizeId(prizeId);
sweetIntegralActivityPrize.setIntegralActivityId(integralActivityId);
sweetIntegralActivityPrizeMapper.insert(sweetIntegralActivityPrize);
// 奖品库存
sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrize.getPrizeId(), sweetIntegralActivityPrize.getPrizeNum());
List<SweetIntegralActivityPrizeRelationFormParam> relationList = prize.getPrizeRelationList();
if (!CollectionUtils.isEmpty(relationList)) {
for (SweetIntegralActivityPrizeRelationFormParam relation : relationList) {
SweetIntegralActivityPrizeRelation prizeRelation = SweetIntegralActivityPrizeRelationFormParam.getNew().copy(relation);
prizeRelation.setPrizeId(prizeId);
String relationId = IDGenerator.nextSnowId();
prizeRelation.setPrizeRelationId(relationId);
relationMapper.insert(prizeRelation);
}
}
}
}
// 活动redis处理
this.integralActivityList(integralActivityId);
return insert;
} catch (Exception e) {
log.error("创建活动失败 [e:{}]", e);
return 0;
}
}
@Override
public Integer updateForm(SweetIntegralActivityFromParam param) {
try {
LocalDateTime nowTime = LocalDateTime.now();
SweetIntegralActivity sweetIntegralActivity = SweetIntegralActivityFromParam.getNew().copy(param);
sweetIntegralActivity.setUpdatedAt(nowTime);
String integralActivityId = param.getIntegralActivityId();
int update = sweetIntegralActivityMapper.update(
sweetIntegralActivity,
Wrappers.lambdaUpdate(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId)
);
List<SweetIntegralActivityPrizeFormParam> prizeList = param.getPrizeList();
if (!CollectionUtils.isEmpty(prizeList)) {
for (SweetIntegralActivityPrizeFormParam prize : prizeList) {
SweetIntegralActivityPrize sweetIntegralActivityPrize = SweetIntegralActivityPrizeFormParam.getNew().copy(prize);
sweetIntegralActivityPrize.setUpdatedAt(nowTime);
String prizeId = prize.getPrizeId();
// 处理奖品库存
SweetIntegralActivityPrize sweetIntegralActivityPrizeOld = sweetIntegralActivityPrizeMapper.selectOne(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getPrizeId, prizeId)
);
sweetIntegralActivityPrizeMapper.update(
sweetIntegralActivityPrize,
Wrappers.lambdaUpdate(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getPrizeId, prizeId)
);
Integer prizeNum = sweetIntegralActivityPrizeOld.getPrizeNum();
Integer prizeNumNew = sweetIntegralActivityPrize.getPrizeNum();
int prizeNumDiff = prizeNumNew - prizeNum;
if (prizeNumDiff > 0) {//增加库存
sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, prizeId, prizeNumDiff);
} else if(prizeNumDiff < 0) {// 减少库存
sweetRedisAdminUtils.decrIntegralActivityPrizeNum(integralActivityId, prizeId, Math.abs(prizeNumDiff));
}
List<SweetIntegralActivityPrizeRelationFormParam> relationList = prize.getPrizeRelationList();
if (!CollectionUtils.isEmpty(relationList)) {
for (SweetIntegralActivityPrizeRelationFormParam relation : relationList) {
SweetIntegralActivityPrizeRelation prizeRelation = SweetIntegralActivityPrizeRelationFormParam.getNew().copy(relation);
prizeRelation.setUpdatedAt(nowTime);
String relationId = relation.getPrizeRelationId();
relationMapper.update(
prizeRelation,
Wrappers.lambdaUpdate(SweetIntegralActivityPrizeRelation.class).eq(SweetIntegralActivityPrizeRelation::getPrizeRelationId, relationId)
);
}
}
}
}
// 活动redis处理
this.integralActivityList(integralActivityId);
return update;
} catch (Exception e) {
log.error("编辑活动失败 [e:{}]", e);
return 0;
}
}
@Override
public Integer isOnline(String integralActivityId, Integer isOnline) {
SweetIntegralActivity sweetIntegralActivity = SweetIntegralActivity.getNew();
sweetIntegralActivity.setIsOnline(isOnline);
sweetIntegralActivity.setUpdatedAt(LocalDateTime.now());
int update = sweetIntegralActivityMapper.update(
sweetIntegralActivity,
Wrappers.lambdaUpdate(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId)
);
// 活动redis处理
this.integralActivityList(integralActivityId);
return update;
}
@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)
);
if (!CollectionUtils.isEmpty(sweetIntegralActivityPrizes)) {
List<SweetIntegralActivityPrizeVo> prizeVoList = SweetNewObjectUtil.getSweetIntegralActivityPrizeVoArrayList();
for (SweetIntegralActivityPrize prize : sweetIntegralActivityPrizes) {
SweetIntegralActivityPrizeVo sweetIntegralActivityPrizeVo = SweetIntegralActivityPrizeVo.getNew().copy(prize);
// 已发出
Integer winPrizeNum = sweetIntegralActivityDrawMapper.selectCount(
Wrappers.lambdaQuery(SweetIntegralActivityDraw.class).eq(SweetIntegralActivityDraw::getPrizeId, prize.getPrizeId())
);
sweetIntegralActivityPrizeVo.setWinPrizeNum(winPrizeNum);
prizeVoList.add(sweetIntegralActivityPrizeVo);
}
integralActivityVo.setPrizeList(prizeVoList);
}
return integralActivityVo;
}
@Override
public PageInfo<SweetIntegralActivityDto> list(SweetIntegralActivityListSearchParam listParam) {
PageHelper.startPage(listParam.getPageNum(), listParam.getPageSize());
List<SweetIntegralActivityDto> voList = sweetIntegralActivityMapper.searchActivityList(listParam.getActivityTitle());
return new PageInfo(voList);
}
private void integralActivityList(String integralActivityId) {
// 活动列表
LambdaQueryWrapper<SweetIntegralActivity> queryWrapper = Wrappers.lambdaQuery(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIsOnline, 2);
LocalDateTime now = LocalDateTime.now();
queryWrapper.eq(SweetIntegralActivity::getTimeType, 1).or().eq(SweetIntegralActivity::getIsOnline, 2).eq(SweetIntegralActivity::getTimeType, 2).gt(SweetIntegralActivity::getEndTime, now).lt(SweetIntegralActivity::getStartTime, now);
List<SweetIntegralActivity> sweetIntegralActivities = sweetIntegralActivityMapper.selectList(queryWrapper);
List<IntegralActivityVo> voList = SweetObjectAdminUtil.getSweetIntegralActivityVoList();
sweetIntegralActivities.forEach(r -> {
IntegralActivityVo copy = IntegralActivityVo.getNew().copy(r);
voList.add(copy);
});
sweetRedisAdminUtils.setIntegralActivityList(voList);
// 活动详情
SweetIntegralActivity sweetIntegralActivity = sweetIntegralActivityMapper.selectOne(
Wrappers.lambdaQuery(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId)
);
IntegralActivityVo integralActivityVo = IntegralActivityVo.getNew().copy(sweetIntegralActivity);
List<SweetIntegralActivityPrize> sweetIntegralActivityPrizes = sweetIntegralActivityPrizeMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId)
);
integralActivityVo.setPrizeList(sweetIntegralActivityPrizes);
sweetRedisAdminUtils.setIntegralActivityInfo(integralActivityVo);
}
}
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