| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- package com.fdkankan.agent.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.fdkankan.agent.common.PageInfo;
- import com.fdkankan.agent.common.ResultCode;
- import com.fdkankan.agent.common.util.IncrementUtil;
- import com.fdkankan.agent.entity.IncrementOrderMg;
- import com.fdkankan.agent.entity.IncrementType;
- import com.fdkankan.agent.entity.User;
- import com.fdkankan.agent.entity.UserIncrement;
- import com.fdkankan.agent.exception.BusinessException;
- import com.fdkankan.agent.mapper.IUserIncrementMapper;
- import com.fdkankan.agent.request.CameraParam;
- import com.fdkankan.agent.request.IncrementParam;
- import com.fdkankan.agent.request.ScenePayStatusVo;
- import com.fdkankan.agent.request.UserIncrementParam;
- import com.fdkankan.agent.response.AgentNewVo;
- import com.fdkankan.agent.response.UserIncrementVo;
- import com.fdkankan.agent.service.*;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.fdkankan.agent.util.DateUtils;
- import com.fdkankan.common.util.DateUtil;
- import com.fdkankan.rabbitmq.util.RabbitMqProducer;
- import org.apache.commons.lang3.StringUtils;
- import org.joda.time.DateTime;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.*;
- /**
- * <p>
- * 用户增值权益表 服务实现类
- * </p>
- *
- * @author
- * @since 2022-11-10
- */
- @Service
- public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper, UserIncrement> implements IUserIncrementService {
- @Autowired
- IUserService userService;
- @Autowired
- IIncrementTypeService incrementTypeService;
- @Autowired
- IAgentNewService agentNewService;
- @Autowired
- IIncrementOrderMgService incrementOrderMgService;
- @Autowired
- RabbitMqProducer rabbitMqProducer;
- @Autowired
- public static String ucenterScenePayStatusQueue = "scene-pay-status";
- @Override
- public UserIncrement getByCameraId(Long cameraId) {
- LambdaQueryWrapper<UserIncrement> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(UserIncrement::getCameraId,cameraId);
- List<UserIncrement> list = this.list(wrapper);
- if(list !=null && list.size() >0){
- return list.get(0);
- }
- return null;
- }
- @Override
- public Object pageList(IncrementParam param) {
- Page<UserIncrementVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(), param.getPageSize()), param);
- for (UserIncrementVo vo :page.getRecords() ) {
- String fmName = IncrementUtil.getStrIncrementName(vo.getValidTimeType(), vo.getIncrementTypeName());
- vo.setIncrementTypeName(fmName);
- }
- return PageInfo.PageInfo(page);
- }
- @Override
- public void addIncrement(IncrementParam param, AgentNewVo agentNewVo) {
- if(StringUtils.isBlank(param.getUserName()) || param.getIncrementTypeId() == null
- || param.getCount() == null || StringUtils.isEmpty(param.getIncrementEndTime())){
- throw new BusinessException(ResultCode.PARAM_MISS);
- }
- IncrementType incrementType = incrementTypeService.getById(param.getIncrementTypeId());
- if(incrementType == null){
- throw new BusinessException(ResultCode.INCREMENT_TYPE_EMPTY);
- }
- if (incrementType.getValidTimeType() == 0) {
- if(agentNewVo.getMajorSubNum() < param.getCount() * param.getTotalTime()){
- throw new BusinessException(ResultCode.INCREMENT_NUM_EMPTY);
- }
- }
- if (incrementType.getValidTimeType() == 1) {
- if(agentNewVo.getHighSubNum() < param.getCount() * param.getTotalTime()){
- throw new BusinessException(ResultCode.INCREMENT_NUM_EMPTY);
- }
- }
- User user = userService.getByUserName(param.getUserName());
- if(user == null){
- throw new BusinessException(ResultCode.USER_NOT_EXIST);
- }
- if(incrementType.getValidTimeType() == 0){
- param.setMemberLevels("PR");
- }
- if(incrementType.getValidTimeType() == 1){
- param.setMemberLevels("SE");
- }
- IncrementOrderMg orderMg = incrementOrderMgService.addOrder(user, param, agentNewVo);
- 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(user.getId());
- userIncrement.setKeyWord(UUID.randomUUID().toString().replace("-", ""));
- userIncrement.setOrderSn(orderMg.getOrderSn());
- userIncrement.setIsExpired(0);
- userIncrement.setCreateTime(date);
- userIncrement.setUpdateTime(date);
- userIncrement.setIncrementStartTime(date);
- userIncrement.setIncrementEndTime(param.getIncrementEndTime());
- userIncrement.setIncrementTypeId(param.getIncrementTypeId());
- userIncrement.setAgentId(agentNewVo.getId());
- userIncrement.setMemberLevels(param.getMemberLevels());
- userIncrement.setMonthQy(1);
- userIncrementList.add(userIncrement);
- }
- if(userIncrementList.size() >0){
- this.saveBatch(userIncrementList);
- LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
- wrapper.eq(User::getId,user.getId());
- wrapper.setSql("download_num_total = download_num_total + " + param.getCount() *param.getTotalTime() * incrementType.getDownloadNum());
- userService.update(wrapper);
- agentNewService.subNum(agentNewVo,user.getId(),incrementType,param.getCount(),param.getTotalTime(),0);
- }
- }
- @Override
- public void renew(IncrementParam param, AgentNewVo agentNewVo) {
- if(param.getId() == null || StringUtils.isEmpty(param.getIncrementEndTime())){
- throw new BusinessException(ResultCode.PARAM_MISS);
- }
- UserIncrement userIncrement = this.getById(param.getId());
- if(userIncrement == null){
- throw new BusinessException(ResultCode.INCREMENT_EMPTY);
- }
- User user = userService.getById(userIncrement.getUserId());
- if(user == null){
- throw new BusinessException(ResultCode.USER_NOT_EXIST);
- }
- IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
- if(incrementType == null){
- throw new BusinessException(ResultCode.INCREMENT_TYPE_EMPTY);
- }
- if (incrementType.getValidTimeType() == 0) {
- if(agentNewVo.getMajorSubNum() < param.getTotalTime()){
- throw new BusinessException(ResultCode.INCREMENT_NUM_EMPTY);
- }
- }
- if (incrementType.getValidTimeType() == 1) {
- if(agentNewVo.getHighSubNum() < param.getTotalTime()){
- throw new BusinessException(ResultCode.INCREMENT_NUM_EMPTY);
- }
- }
- if(incrementType.getValidTimeType() == 0){
- param.setMemberLevels("PR");
- }
- if(incrementType.getValidTimeType() == 1){
- param.setMemberLevels("SE");
- }
- IncrementOrderMg orderMg = incrementOrderMgService.addOrder(user, param, agentNewVo);
- userIncrement.setIsExpired(0);
- DateTime dateTime = this.getDateTime(incrementType, userIncrement.getId(), param.getCount() * param.getTotalTime());
- userIncrement.setIncrementEndTime(DateUtil.date2String(dateTime.toDate(),"yyyy-MM-dd HH:mm:ss"));
- userIncrement.setUpdateTime(null);
- userIncrement.setOrderSn(userIncrement.getOrderSn() +","+orderMg.getOrderSn());
- this.updateById(userIncrement);
- LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
- wrapper.eq(User::getId,user.getId());
- wrapper.setSql("download_num_total = download_num_total + " + incrementType.getDownloadNum());
- userService.update(wrapper);
- agentNewService.subNum(agentNewVo,user.getId(),incrementType,1,param.getTotalTime(),1);
- if(userIncrement.getCameraId() != null){
- ScenePayStatusVo scenePayStatusVo = new ScenePayStatusVo(userIncrement.getCameraId());
- Map<String, Object> map = BeanUtil.beanToMap(scenePayStatusVo);
- rabbitMqProducer.sendByWorkQueue(ucenterScenePayStatusQueue, map);
- }
- }
- @Override
- public HashMap<Long, UserIncrement> getByCameraIds(List<Long> cameraIds) {
- HashMap<Long, UserIncrement> map = new HashMap<>();
- if(cameraIds .isEmpty()){
- return map;
- }
- LambdaQueryWrapper<UserIncrement> wrapper = new LambdaQueryWrapper<>();
- wrapper.in(UserIncrement::getCameraId,cameraIds);
- List<UserIncrement> list = this.list(wrapper);
- list.forEach(e -> map.put(e.getCameraId(),e));
- return map;
- }
- @Override
- public List<Long> getByAgentId(CameraParam param) {
- return this.getBaseMapper().getByAgentId(param.getAgentId(),param.getIncrementStatus(),param.getIncrementTypeId());
- }
- @Override
- public DateTime getAddUserIncrementTime(UserIncrementParam param) {
- IncrementType incrementType = incrementTypeService.getById(param.getIncrementTypeId());
- return this.getDateTime(incrementType,param.getId(),param.getCount());
- }
- public DateTime getDateTime(IncrementType incrementType, Long userIncrementId, Integer count) {
- Date userTime = new Date();
- if(userIncrementId != null){
- UserIncrement userIncrement = this.getById(userIncrementId);
- userTime = DateUtils.getDate(userIncrement.getIncrementEndTime());
- }
- return DateUtils.getDateTime(userTime, incrementType,count);
- }
- }
|