|
|
@@ -0,0 +1,119 @@
|
|
|
+package com.fdkankan.manage.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fdkankan.common.exception.BusinessException;
|
|
|
+import com.fdkankan.common.response.PageInfo;
|
|
|
+import com.fdkankan.common.util.DateUtil;
|
|
|
+import com.fdkankan.manage.entity.Camera;
|
|
|
+import com.fdkankan.manage.entity.UserIncrement;
|
|
|
+import com.fdkankan.manage.mapper.IUserIncrementMapper;
|
|
|
+import com.fdkankan.manage.service.ICameraService;
|
|
|
+import com.fdkankan.manage.service.IUserIncrementService;
|
|
|
+import com.fdkankan.manage.vo.request.UserIncrementParam;
|
|
|
+import com.fdkankan.manage.vo.response.GroupByUserIdCount;
|
|
|
+import com.fdkankan.manage.vo.response.UserIncrementVo;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 用户增值权益表 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2022-06-16
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper, UserIncrement> implements IUserIncrementService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ICameraService cameraService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Long getValidCountByUserId(Long userId) {
|
|
|
+ LambdaQueryWrapper<UserIncrement> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(UserIncrement::getUserId,userId);
|
|
|
+ wrapper.gt(UserIncrement::getIncrementEndTime, DateUtil.date2String(new Date(),DateUtil.DEFAULT_DATE_FORMAT));
|
|
|
+ return this.count(wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HashMap<Long, Long> getValidCountGroupByUserId(List<Long> userIdList) {
|
|
|
+ HashMap<Long,Long> map = new HashMap<>();
|
|
|
+ List<GroupByUserIdCount> result = this.getBaseMapper().getValidCountGroupByUserId(userIdList);
|
|
|
+ result.forEach(entity ->map.put(entity.getUserId(),entity.getCount()));
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo pageList(Long userId, Integer pageNum, Integer pageSize) {
|
|
|
+ LambdaQueryWrapper<UserIncrement> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(UserIncrement::getUserId,userId);
|
|
|
+ Page<UserIncrement> page = this.page(new Page<>(pageNum, pageSize), wrapper);
|
|
|
+
|
|
|
+ List<Long> cameraIdList = page.getRecords().parallelStream()
|
|
|
+ .filter(camera ->camera.getCameraId()!=null)
|
|
|
+ .map(UserIncrement::getCameraId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ HashMap<Long,Camera> cameraMap = new HashMap<>();
|
|
|
+ if(cameraIdList.size() >0){
|
|
|
+ List<Camera> details = cameraService.getListByCameraIdList(cameraIdList);
|
|
|
+ for (Camera detail : details) {
|
|
|
+ cameraMap.put(detail.getId(),detail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<UserIncrementVo> voList = new ArrayList<>();
|
|
|
+ for (UserIncrement record : page.getRecords()) {
|
|
|
+ UserIncrementVo vo = new UserIncrementVo();
|
|
|
+ BeanUtils.copyProperties(record,vo);
|
|
|
+ if(record.getCameraId() != null){
|
|
|
+ Camera camera = cameraMap.get(record.getCameraId());
|
|
|
+ if(camera != null){
|
|
|
+ vo.setSnCode(camera.getSnCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ voList.add(vo);
|
|
|
+ }
|
|
|
+ Page<UserIncrementVo> voPage = new Page<>(pageNum, pageSize);
|
|
|
+ voPage.setRecords(voList);
|
|
|
+ voPage.setTotal(page.getTotal());
|
|
|
+ return PageInfo.PageInfo(voPage);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delayById(Long id, Integer year) {
|
|
|
+ UserIncrement userIncrement = this.getById(id);
|
|
|
+ if(userIncrement == null){
|
|
|
+ throw new BusinessException(-1,"权益包不存在");
|
|
|
+ }
|
|
|
+ userIncrement.setIsExpired(0);
|
|
|
+ Date date = DateUtil.string2Date(userIncrement.getIncrementEndTime(), DateUtil.DEFAULT_DATE_FORMAT);
|
|
|
+ Date delay = DateUtil.delay(date, 1, 1);
|
|
|
+ userIncrement.setIncrementEndTime(DateUtil.date2String(delay,DateUtil.DEFAULT_DATE_FORMAT));
|
|
|
+ this.updateById(userIncrement);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void add(UserIncrementParam param) {
|
|
|
+ List<UserIncrement> userIncrementList = new ArrayList<>();
|
|
|
+ for (int i = 0 ; i<param.getCount() ;i++) {
|
|
|
+ UserIncrement userIncrement = new UserIncrement();
|
|
|
+ String date = DateUtil.date2String(new Date(), DateUtil.DEFAULT_DATE_FORMAT);
|
|
|
+ userIncrement.setUserId(param.getUserId());
|
|
|
+ userIncrement.setKeyWord(UUID.randomUUID().toString().replace("-", ""));
|
|
|
+ userIncrement.setIsExpired(0);
|
|
|
+ userIncrement.setCreateTime(date);
|
|
|
+ userIncrement.setUpdateTime(date);
|
|
|
+ userIncrement.setIncrementStartTime(date);
|
|
|
+ userIncrement.setIncrementEndTime(param.getIncrementEndTime());
|
|
|
+ userIncrementList.add(userIncrement);
|
|
|
+ }
|
|
|
+ this.saveBatch(userIncrementList);
|
|
|
+ }
|
|
|
+}
|