Commit 5ed9739c 5ed9739cee9d6cda32aaa67a8335cf4a37f51c14 by xianghan@topdraw.cn

V1.1.0-future-UserCenter接口转移

1 parent 9cc43dc0
Showing 278 changed files with 4572 additions and 1100 deletions
......@@ -12,15 +12,21 @@
<artifactId>member-service-api</artifactId>
<properties>
<cronos.version>1.1.0</cronos.version>
</properties>
<dependencies>
<!--系统-->
<dependency>
<groupId>com.topdraw</groupId>
<artifactId>cronos-system</artifactId>
<version>${cronos.version}</version>
</dependency>
<!--代码生成器-->
<dependency>
<groupId>com.topdraw</groupId>
<artifactId>code-generator</artifactId>
<version>3.1.0</version>
<artifactId>cronos-generator</artifactId>
<version>${cronos.version}</version>
</dependency>
</dependencies>
......
......@@ -25,6 +25,8 @@ public class DataSyncMsg implements Serializable {
// 其他属性
private String extraData;
/** 模板参数 */
private TaskTemplateParam param;
/**
* 消息体
......@@ -47,6 +49,18 @@ public class DataSyncMsg implements Serializable {
private Long activityId;
private Long mediaId;
private Long itemId;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class TaskTemplateParam {
/** 类别 */
private String category;
/** 编码 */
private String code;
}
}
......
package com.topdraw.business.basicdata.coupon.domain;
package com.topdraw.business.module.coupon.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.coupon.history.domain;
package com.topdraw.business.module.coupon.history.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.coupon.history.repository;
package com.topdraw.business.module.coupon.history.repository;
import com.topdraw.business.basicdata.coupon.history.domain.CouponHistory;
import com.topdraw.business.module.coupon.history.domain.CouponHistory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.sql.Timestamp;
import java.util.Optional;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.coupon.history.rest;
package com.topdraw.business.module.coupon.history.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.coupon.history.domain.CouponHistory;
import com.topdraw.business.basicdata.coupon.history.service.CouponHistoryService;
import com.topdraw.business.basicdata.coupon.history.service.dto.CouponHistoryQueryCriteria;
import com.topdraw.business.module.coupon.history.domain.CouponHistory;
import com.topdraw.business.module.coupon.history.service.CouponHistoryService;
import com.topdraw.business.module.coupon.history.service.dto.CouponHistoryQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.coupon.history.service;
package com.topdraw.business.module.coupon.history.service;
import com.topdraw.business.basicdata.coupon.history.domain.CouponHistory;
import com.topdraw.business.basicdata.coupon.history.service.dto.CouponHistoryDTO;
import com.topdraw.business.basicdata.coupon.history.service.dto.CouponHistoryQueryCriteria;
import com.topdraw.business.module.coupon.history.domain.CouponHistory;
import com.topdraw.business.module.coupon.history.service.dto.CouponHistoryDTO;
import com.topdraw.business.module.coupon.history.service.dto.CouponHistoryQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.sql.Timestamp;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.coupon.history.service.dto;
package com.topdraw.business.module.coupon.history.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.coupon.history.service.dto;
package com.topdraw.business.module.coupon.history.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.coupon.history.service.impl;
package com.topdraw.business.module.coupon.history.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.coupon.history.domain.CouponHistory;
import com.topdraw.business.module.coupon.history.domain.CouponHistory;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.coupon.history.repository.CouponHistoryRepository;
import com.topdraw.business.basicdata.coupon.history.service.CouponHistoryService;
import com.topdraw.business.basicdata.coupon.history.service.dto.CouponHistoryDTO;
import com.topdraw.business.basicdata.coupon.history.service.dto.CouponHistoryQueryCriteria;
import com.topdraw.business.basicdata.coupon.history.service.mapper.CouponHistoryMapper;
import com.topdraw.business.module.coupon.history.repository.CouponHistoryRepository;
import com.topdraw.business.module.coupon.history.service.CouponHistoryService;
import com.topdraw.business.module.coupon.history.service.dto.CouponHistoryDTO;
import com.topdraw.business.module.coupon.history.service.dto.CouponHistoryQueryCriteria;
import com.topdraw.business.module.coupon.history.service.mapper.CouponHistoryMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......
package com.topdraw.business.basicdata.coupon.history.service.mapper;
package com.topdraw.business.module.coupon.history.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.coupon.history.domain.CouponHistory;
import com.topdraw.business.basicdata.coupon.history.service.dto.CouponHistoryDTO;
import com.topdraw.business.module.coupon.history.domain.CouponHistory;
import com.topdraw.business.module.coupon.history.service.dto.CouponHistoryDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.coupon.repository;
package com.topdraw.business.module.coupon.repository;
import com.topdraw.business.basicdata.coupon.domain.Coupon;
import com.topdraw.business.module.coupon.domain.Coupon;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.coupon.rest;
package com.topdraw.business.module.coupon.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.coupon.domain.Coupon;
import com.topdraw.business.basicdata.coupon.service.CouponService;
import com.topdraw.business.basicdata.coupon.service.dto.CouponQueryCriteria;
import com.topdraw.business.module.coupon.domain.Coupon;
import com.topdraw.business.module.coupon.service.CouponService;
import com.topdraw.business.module.coupon.service.dto.CouponQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
......
package com.topdraw.business.basicdata.coupon.service;
package com.topdraw.business.module.coupon.service;
import com.topdraw.business.basicdata.coupon.domain.Coupon;
import com.topdraw.business.basicdata.coupon.service.dto.CouponDTO;
import com.topdraw.business.basicdata.coupon.service.dto.CouponQueryCriteria;
import com.topdraw.business.module.coupon.domain.Coupon;
import com.topdraw.business.module.coupon.service.dto.CouponDTO;
import com.topdraw.business.module.coupon.service.dto.CouponQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.coupon.service.dto;
package com.topdraw.business.module.coupon.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.coupon.service.impl;
package com.topdraw.business.module.coupon.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.coupon.domain.Coupon;
import com.topdraw.business.module.coupon.domain.Coupon;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.coupon.repository.CouponRepository;
import com.topdraw.business.basicdata.coupon.service.CouponService;
import com.topdraw.business.basicdata.coupon.service.dto.CouponDTO;
import com.topdraw.business.basicdata.coupon.service.dto.CouponQueryCriteria;
import com.topdraw.business.basicdata.coupon.service.mapper.CouponMapper;
import com.topdraw.business.module.coupon.repository.CouponRepository;
import com.topdraw.business.module.coupon.service.CouponService;
import com.topdraw.business.module.coupon.service.dto.CouponDTO;
import com.topdraw.business.module.coupon.service.dto.CouponQueryCriteria;
import com.topdraw.business.module.coupon.service.mapper.CouponMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.business.basicdata.coupon.service.mapper;
package com.topdraw.business.module.coupon.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.coupon.domain.Coupon;
import com.topdraw.business.basicdata.coupon.service.dto.CouponDTO;
import com.topdraw.business.module.coupon.domain.Coupon;
import com.topdraw.business.module.coupon.service.dto.CouponDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.exp.detail.domain;
package com.topdraw.business.module.exp.detail.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.exp.detail.repository;
package com.topdraw.business.module.exp.detail.repository;
import com.topdraw.business.basicdata.exp.detail.domain.ExpDetail;
import com.topdraw.business.module.exp.detail.domain.ExpDetail;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.exp.detail.rest;
package com.topdraw.business.module.exp.detail.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.exp.detail.domain.ExpDetail;
import com.topdraw.business.basicdata.exp.detail.service.ExpDetailService;
import com.topdraw.business.basicdata.exp.detail.service.dto.ExpDetailQueryCriteria;
import com.topdraw.business.module.exp.detail.domain.ExpDetail;
import com.topdraw.business.module.exp.detail.service.ExpDetailService;
import com.topdraw.business.module.exp.detail.service.dto.ExpDetailQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
......
package com.topdraw.business.basicdata.exp.detail.service;
package com.topdraw.business.module.exp.detail.service;
import com.topdraw.business.basicdata.exp.detail.domain.ExpDetail;
import com.topdraw.business.basicdata.exp.detail.service.dto.ExpDetailDTO;
import com.topdraw.business.basicdata.exp.detail.service.dto.ExpDetailQueryCriteria;
import com.topdraw.business.module.exp.detail.domain.ExpDetail;
import com.topdraw.business.module.exp.detail.service.dto.ExpDetailDTO;
import com.topdraw.business.module.exp.detail.service.dto.ExpDetailQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.exp.detail.service.dto;
package com.topdraw.business.module.exp.detail.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.exp.detail.service.impl;
package com.topdraw.business.module.exp.detail.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.exp.detail.domain.ExpDetail;
import com.topdraw.business.module.exp.detail.domain.ExpDetail;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.exp.detail.repository.ExpDetailRepository;
import com.topdraw.business.basicdata.exp.detail.service.ExpDetailService;
import com.topdraw.business.basicdata.exp.detail.service.dto.ExpDetailDTO;
import com.topdraw.business.basicdata.exp.detail.service.dto.ExpDetailQueryCriteria;
import com.topdraw.business.basicdata.exp.detail.service.mapper.ExpDetailMapper;
import com.topdraw.business.module.exp.detail.repository.ExpDetailRepository;
import com.topdraw.business.module.exp.detail.service.ExpDetailService;
import com.topdraw.business.module.exp.detail.service.dto.ExpDetailDTO;
import com.topdraw.business.module.exp.detail.service.dto.ExpDetailQueryCriteria;
import com.topdraw.business.module.exp.detail.service.mapper.ExpDetailMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.business.basicdata.exp.detail.service.mapper;
package com.topdraw.business.module.exp.detail.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.exp.detail.domain.ExpDetail;
import com.topdraw.business.basicdata.exp.detail.service.dto.ExpDetailDTO;
import com.topdraw.business.module.exp.detail.domain.ExpDetail;
import com.topdraw.business.module.exp.detail.service.dto.ExpDetailDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.exp.history.domain;
package com.topdraw.business.module.exp.history.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.exp.history.repository;
package com.topdraw.business.module.exp.history.repository;
import com.topdraw.business.basicdata.exp.history.domain.ExpHistory;
import com.topdraw.business.module.exp.history.domain.ExpHistory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.exp.history.rest;
package com.topdraw.business.module.exp.history.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.exp.history.domain.ExpHistory;
import com.topdraw.business.basicdata.exp.history.service.ExpHistoryService;
import com.topdraw.business.basicdata.exp.history.service.dto.ExpHistoryQueryCriteria;
import com.topdraw.business.module.exp.history.service.ExpHistoryService;
import com.topdraw.business.module.exp.history.service.dto.ExpHistoryQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
......
package com.topdraw.business.basicdata.exp.history.service;
package com.topdraw.business.module.exp.history.service;
import com.topdraw.business.basicdata.exp.history.domain.ExpHistory;
import com.topdraw.business.basicdata.exp.history.service.dto.ExpHistoryDTO;
import com.topdraw.business.basicdata.exp.history.service.dto.ExpHistoryQueryCriteria;
import com.topdraw.business.module.exp.history.domain.ExpHistory;
import com.topdraw.business.module.exp.history.service.dto.ExpHistoryDTO;
import com.topdraw.business.module.exp.history.service.dto.ExpHistoryQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.exp.history.service.dto;
package com.topdraw.business.module.exp.history.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.exp.history.service.impl;
package com.topdraw.business.module.exp.history.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.exp.history.domain.ExpHistory;
import com.topdraw.business.module.exp.history.domain.ExpHistory;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.exp.history.repository.ExpHistoryRepository;
import com.topdraw.business.basicdata.exp.history.service.ExpHistoryService;
import com.topdraw.business.basicdata.exp.history.service.dto.ExpHistoryDTO;
import com.topdraw.business.basicdata.exp.history.service.dto.ExpHistoryQueryCriteria;
import com.topdraw.business.basicdata.exp.history.service.mapper.ExpHistoryMapper;
import com.topdraw.business.module.exp.history.repository.ExpHistoryRepository;
import com.topdraw.business.module.exp.history.service.ExpHistoryService;
import com.topdraw.business.module.exp.history.service.dto.ExpHistoryDTO;
import com.topdraw.business.module.exp.history.service.dto.ExpHistoryQueryCriteria;
import com.topdraw.business.module.exp.history.service.mapper.ExpHistoryMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......
package com.topdraw.business.basicdata.exp.history.service.mapper;
package com.topdraw.business.module.exp.history.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.exp.history.domain.ExpHistory;
import com.topdraw.business.basicdata.exp.history.service.dto.ExpHistoryDTO;
import com.topdraw.business.module.exp.history.domain.ExpHistory;
import com.topdraw.business.module.exp.history.service.dto.ExpHistoryDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.member.address.domain;
package com.topdraw.business.module.member.address.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.member.address.repository;
package com.topdraw.business.module.member.address.repository;
import com.topdraw.business.basicdata.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.member.address.rest;
package com.topdraw.business.module.member.address.rest;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.member.address.domain.MemberAddress;
import com.topdraw.business.basicdata.member.address.service.MemberAddressService;
import com.topdraw.business.basicdata.member.address.service.dto.MemberAddressQueryCriteria;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.service.MemberAddressService;
import com.topdraw.business.module.member.address.service.dto.MemberAddressQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
......
package com.topdraw.business.basicdata.member.address.service;
package com.topdraw.business.module.member.address.service;
import com.topdraw.business.basicdata.member.address.domain.MemberAddress;
import com.topdraw.business.basicdata.member.address.service.dto.MemberAddressDTO;
import com.topdraw.business.basicdata.member.address.service.dto.MemberAddressQueryCriteria;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO;
import com.topdraw.business.module.member.address.service.dto.MemberAddressQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.member.address.service.dto;
package com.topdraw.business.module.member.address.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.member.address.service.dto;
package com.topdraw.business.module.member.address.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
......
package com.topdraw.business.basicdata.member.address.service.impl;
package com.topdraw.business.module.member.address.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.member.address.repository.MemberAddressRepository;
import com.topdraw.business.basicdata.member.address.service.MemberAddressService;
import com.topdraw.business.basicdata.member.address.service.dto.MemberAddressDTO;
import com.topdraw.business.basicdata.member.address.service.dto.MemberAddressQueryCriteria;
import com.topdraw.business.basicdata.member.address.service.mapper.MemberAddressMapper;
import com.topdraw.business.module.member.address.repository.MemberAddressRepository;
import com.topdraw.business.module.member.address.service.MemberAddressService;
import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO;
import com.topdraw.business.module.member.address.service.dto.MemberAddressQueryCriteria;
import com.topdraw.business.module.member.address.service.mapper.MemberAddressMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......
package com.topdraw.business.basicdata.member.address.service.mapper;
package com.topdraw.business.module.member.address.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.member.address.domain.MemberAddress;
import com.topdraw.business.basicdata.member.address.service.dto.MemberAddressDTO;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.member.domain;
package com.topdraw.business.module.member.domain;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.topdraw.business.basicdata.member.profile.domain.MemberProfile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.CreatedDate;
......@@ -135,6 +133,6 @@ public class Member implements Serializable {
private Long blackStatus;
public void copy(Member source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(false));
}
}
......
package com.topdraw.business.module.member.domain;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.topdraw.util.IdWorker;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDateTime;
/**
* @author XiangHan
* @date 2021-10-22
*/
public class MemberBuilder {
public static Member build(Integer type,String avatarUrl,String nickname,Integer vip){
Member member = new Member();
member.setType(type);
member.setBlackStatus(0L);
member.setGender(-1);
member.setVip(vip==null?0:vip);
member.setLevel(1);
member.setStatus(1);
member.setPoints(0L);
member.setDuePoints(0L);
member.setExp(0L);
member.setCouponAmount(0L);
member.setDueCouponAmount(0L);
member.setAvatarUrl(avatarUrl);
member.setCode(IdWorker.generator() + "");
member.setNickname(nickname);
return member;
}
}
package com.topdraw.business.module.member.domain;
public interface MemberConstant {
// vip等级
Integer vip[] = new Integer[]{0,1,2,3,4,5,6,7,8};
}
package com.topdraw.business.basicdata.member.group.domain;
package com.topdraw.business.module.member.group.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.member.group.repository;
package com.topdraw.business.module.member.group.repository;
import com.topdraw.business.basicdata.member.group.domain.MemberGroup;
import com.topdraw.business.module.member.group.domain.MemberGroup;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.Optional;
/**
* @author XiangHan
* @date 2021-11-17
......
package com.topdraw.business.basicdata.member.group.rest;
package com.topdraw.business.module.member.group.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.member.group.domain.MemberGroup;
import com.topdraw.business.basicdata.member.group.service.MemberGroupService;
import com.topdraw.business.basicdata.member.group.service.dto.MemberGroupQueryCriteria;
import com.topdraw.business.module.member.group.domain.MemberGroup;
import com.topdraw.business.module.member.group.service.MemberGroupService;
import com.topdraw.business.module.member.group.service.dto.MemberGroupQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.member.group.service;
package com.topdraw.business.module.member.group.service;
import com.topdraw.business.basicdata.member.group.domain.MemberGroup;
import com.topdraw.business.basicdata.member.group.service.dto.MemberGroupDTO;
import com.topdraw.business.basicdata.member.group.service.dto.MemberGroupQueryCriteria;
import com.topdraw.business.module.member.group.domain.MemberGroup;
import com.topdraw.business.module.member.group.service.dto.MemberGroupDTO;
import com.topdraw.business.module.member.group.service.dto.MemberGroupQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.member.group.service.dto;
package com.topdraw.business.module.member.group.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.member.group.service.dto;
package com.topdraw.business.module.member.group.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
......
package com.topdraw.business.basicdata.member.group.service.impl;
package com.topdraw.business.module.member.group.service.impl;
import com.topdraw.business.basicdata.member.group.domain.MemberGroup;
import com.topdraw.business.module.member.group.domain.MemberGroup;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.FileUtil;
import com.topdraw.business.basicdata.member.group.repository.MemberGroupRepository;
import com.topdraw.business.basicdata.member.group.service.MemberGroupService;
import com.topdraw.business.basicdata.member.group.service.dto.MemberGroupDTO;
import com.topdraw.business.basicdata.member.group.service.dto.MemberGroupQueryCriteria;
import com.topdraw.business.basicdata.member.group.service.mapper.MemberGroupMapper;
import com.topdraw.business.module.member.group.repository.MemberGroupRepository;
import com.topdraw.business.module.member.group.service.MemberGroupService;
import com.topdraw.business.module.member.group.service.dto.MemberGroupDTO;
import com.topdraw.business.module.member.group.service.dto.MemberGroupQueryCriteria;
import com.topdraw.business.module.member.group.service.mapper.MemberGroupMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -18,14 +17,9 @@ import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.member.group.service.mapper;
package com.topdraw.business.module.member.group.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.member.group.domain.MemberGroup;
import com.topdraw.business.basicdata.member.group.service.dto.MemberGroupDTO;
import com.topdraw.business.module.member.group.domain.MemberGroup;
import com.topdraw.business.module.member.group.service.dto.MemberGroupDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.member.level.domain;
package com.topdraw.business.module.member.level.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.member.level.repository;
package com.topdraw.business.module.member.level.repository;
import com.topdraw.business.basicdata.member.level.domain.MemberLevel;
import com.topdraw.business.module.member.level.domain.MemberLevel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.member.level.rest;
package com.topdraw.business.module.member.level.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.member.level.domain.MemberLevel;
import com.topdraw.business.basicdata.member.level.service.MemberLevelService;
import com.topdraw.business.basicdata.member.level.service.dto.MemberLevelQueryCriteria;
import com.topdraw.business.module.member.level.service.MemberLevelService;
import com.topdraw.business.module.member.level.service.dto.MemberLevelQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
......
package com.topdraw.business.basicdata.member.level.service;
package com.topdraw.business.module.member.level.service;
import com.topdraw.business.basicdata.member.level.domain.MemberLevel;
import com.topdraw.business.basicdata.member.level.service.dto.MemberLevelDTO;
import com.topdraw.business.basicdata.member.level.service.dto.MemberLevelQueryCriteria;
import com.topdraw.business.module.member.level.domain.MemberLevel;
import com.topdraw.business.module.member.level.service.dto.MemberLevelDTO;
import com.topdraw.business.module.member.level.service.dto.MemberLevelQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.member.level.service.dto;
package com.topdraw.business.module.member.level.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.member.level.service.impl;
package com.topdraw.business.module.member.level.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.member.level.domain.MemberLevel;
import com.topdraw.business.module.member.level.domain.MemberLevel;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.member.level.repository.MemberLevelRepository;
import com.topdraw.business.basicdata.member.level.service.MemberLevelService;
import com.topdraw.business.basicdata.member.level.service.dto.MemberLevelDTO;
import com.topdraw.business.basicdata.member.level.service.dto.MemberLevelQueryCriteria;
import com.topdraw.business.basicdata.member.level.service.mapper.MemberLevelMapper;
import com.topdraw.business.module.member.level.repository.MemberLevelRepository;
import com.topdraw.business.module.member.level.service.MemberLevelService;
import com.topdraw.business.module.member.level.service.dto.MemberLevelDTO;
import com.topdraw.business.module.member.level.service.dto.MemberLevelQueryCriteria;
import com.topdraw.business.module.member.level.service.mapper.MemberLevelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
......
package com.topdraw.business.basicdata.member.level.service.mapper;
package com.topdraw.business.module.member.level.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.member.level.domain.MemberLevel;
import com.topdraw.business.basicdata.member.level.service.dto.MemberLevelDTO;
import com.topdraw.business.module.member.level.domain.MemberLevel;
import com.topdraw.business.module.member.level.service.dto.MemberLevelDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.member.profile.domain;
package com.topdraw.business.module.member.profile.domain;
import com.topdraw.business.basicdata.member.profile.DoSaveMemberProfileGroup;
import com.topdraw.business.basicdata.member.profile.DoUpdateMemberProfileGroup;
import com.topdraw.business.module.member.profile.DoSaveMemberProfileGroup;
import com.topdraw.business.module.member.profile.DoUpdateMemberProfileGroup;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
......
package com.topdraw.business.basicdata.member.profile.repository;
package com.topdraw.business.module.member.profile.repository;
import com.topdraw.business.basicdata.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.member.profile.rest;
package com.topdraw.business.module.member.profile.rest;
import com.topdraw.business.basicdata.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.member.profile.domain.MemberProfile;
import com.topdraw.business.basicdata.member.profile.service.MemberProfileService;
import com.topdraw.business.basicdata.member.profile.service.dto.MemberProfileQueryCriteria;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......
package com.topdraw.business.basicdata.member.profile.service;
package com.topdraw.business.module.member.profile.service;
import com.topdraw.business.basicdata.member.profile.domain.MemberProfile;
import com.topdraw.business.basicdata.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.basicdata.member.profile.service.dto.MemberProfileQueryCriteria;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......@@ -35,7 +35,7 @@ public interface MemberProfileService {
*/
MemberProfileDTO findById(Long id);
void create(MemberProfile resources);
MemberProfile create(MemberProfile resources);
void update(MemberProfile resources);
......
package com.topdraw.business.basicdata.member.profile.service.dto;
package com.topdraw.business.module.member.profile.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......@@ -21,21 +21,30 @@ public class MemberProfileDTO implements Serializable {
// 姓名
private String realname;
private String nickname;
// 性别 0:女; 1:男 -1:未知
private Integer gender;
// 生日
private Timestamp birthday;
// 生日字符串
private String birthdayStr;
// vip
private Integer vip;
// 星座
private String constellation;
// 身份证
private String idCard;
private Long vipExpireTime;
// 电话
private String phone;
// 身份证
private String idCard;
// 电子邮件
private String email;
......@@ -48,6 +57,9 @@ public class MemberProfileDTO implements Serializable {
// 城市
private String city;
// 头像
private String avatarUrl;
// 区县
private String district;
......
package com.topdraw.business.basicdata.member.profile.service.impl;
package com.topdraw.business.module.member.profile.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.member.profile.domain.MemberProfile;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.member.profile.repository.MemberProfileRepository;
import com.topdraw.business.basicdata.member.profile.service.MemberProfileService;
import com.topdraw.business.basicdata.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.basicdata.member.profile.service.dto.MemberProfileQueryCriteria;
import com.topdraw.business.basicdata.member.profile.service.mapper.MemberProfileMapper;
import com.topdraw.business.module.member.profile.repository.MemberProfileRepository;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileQueryCriteria;
import com.topdraw.business.module.member.profile.service.mapper.MemberProfileMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -61,8 +59,9 @@ public class MemberProfileServiceImpl implements MemberProfileService {
@Override
@Transactional(rollbackFor = Exception.class)
@AsyncMqSend()
public void create(MemberProfile resources) {
public MemberProfile create(MemberProfile resources) {
MemberProfileRepository.save(resources);
return resources;
}
@Override
......
package com.topdraw.business.basicdata.member.profile.service.mapper;
package com.topdraw.business.module.member.profile.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.member.profile.domain.MemberProfile;
import com.topdraw.business.basicdata.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.member.relatedinfo.domain;
package com.topdraw.business.module.member.relatedinfo.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.member.relatedinfo.repository;
package com.topdraw.business.module.member.relatedinfo.repository;
import com.topdraw.business.basicdata.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.member.relatedinfo.rest;
package com.topdraw.business.module.member.relatedinfo.rest;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.basicdata.member.relatedinfo.service.MemberRelatedInfoService;
import com.topdraw.business.basicdata.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.service.MemberRelatedInfoService;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import org.springframework.validation.annotation.Validated;
......
package com.topdraw.business.basicdata.member.relatedinfo.service;
package com.topdraw.business.module.member.relatedinfo.service;
import com.topdraw.business.basicdata.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.basicdata.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import com.topdraw.business.basicdata.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.member.relatedinfo.service.dto;
package com.topdraw.business.module.member.relatedinfo.service.dto;
import lombok.Data;
import javax.persistence.Column;
import java.sql.Timestamp;
import java.io.Serializable;
import java.time.LocalDate;
......
package com.topdraw.business.basicdata.member.relatedinfo.service.dto;
package com.topdraw.business.module.member.relatedinfo.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author XiangHan
* @date 2021-10-22
......
package com.topdraw.business.basicdata.member.relatedinfo.service.impl;
package com.topdraw.business.module.member.relatedinfo.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.member.relatedinfo.repository.MemberRelatedInfoRepository;
import com.topdraw.business.basicdata.member.relatedinfo.service.MemberRelatedInfoService;
import com.topdraw.business.basicdata.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import com.topdraw.business.basicdata.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import com.topdraw.business.basicdata.member.relatedinfo.service.mapper.MemberRelatedInfoMapper;
import com.topdraw.business.module.member.relatedinfo.repository.MemberRelatedInfoRepository;
import com.topdraw.business.module.member.relatedinfo.service.MemberRelatedInfoService;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import com.topdraw.business.module.member.relatedinfo.service.mapper.MemberRelatedInfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......
package com.topdraw.business.basicdata.member.relatedinfo.service.mapper;
package com.topdraw.business.module.member.relatedinfo.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.basicdata.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.member.repository;
package com.topdraw.business.module.member.repository;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.module.member.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.member.rest;
package com.topdraw.business.module.member.rest;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.process.service.UserTvOperationService;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.process.service.UserOperationService;
import com.topdraw.common.ResultInfo;
import com.topdraw.util.Base64Util;
import io.swagger.annotations.Api;
......@@ -33,7 +33,7 @@ public class MemberController {
private MemberService memberService;
@Autowired
private UserTvOperationService userTvOperationService;
private UserOperationService userTvOperationService;
@Log
@GetMapping(value = "/findById/{id}")
......
package com.topdraw.business.basicdata.member.service;
package com.topdraw.business.module.member.service;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.member.service.dto.MemberQueryCriteria;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.service.dto.MemberQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.List;
......@@ -37,10 +37,23 @@ public interface MemberService {
*/
MemberDTO findById(Long id);
/**
*
* @param resources
* @return
*/
Long create(Member resources);
/**
*
* @param resources
*/
void update(Member resources);
/**
*
* @param id
*/
void delete(Long id);
/**
......@@ -50,5 +63,9 @@ public interface MemberService {
*/
MemberDTO getByCode(String code);
/**
*
* @param member
*/
void doUpdateMemberPoints(Member member);
}
......
package com.topdraw.business.basicdata.member.service.dto;
package com.topdraw.business.module.member.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
......
package com.topdraw.business.basicdata.member.service.impl;
package com.topdraw.business.module.member.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.repository.MemberRepository;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.member.service.dto.MemberQueryCriteria;
import com.topdraw.business.basicdata.member.service.mapper.MemberMapper;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.basicdata.user.iptv.service.UserTvService;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.common.ResultInfo;
import com.topdraw.config.LocalConstants;
import com.topdraw.mq.config.RabbitMqConfig;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.repository.MemberRepository;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.service.dto.MemberQueryCriteria;
import com.topdraw.business.module.member.service.mapper.MemberMapper;
import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
......@@ -23,21 +16,15 @@ import com.topdraw.utils.ValidationUtil;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.util.Assert;
import java.nio.charset.StandardCharsets;
......@@ -65,7 +52,7 @@ public class MemberServiceImpl implements MemberService {
PlatformTransactionManager platformTransactionManager;
@Autowired
private com.topdraw.business.basicdata.user.iptv.service.UserTvService UserTvService;
private com.topdraw.business.module.user.iptv.service.UserTvService UserTvService;
@Override
public Map<String, Object> queryAll(MemberQueryCriteria criteria, Pageable pageable) {
......@@ -80,7 +67,6 @@ public class MemberServiceImpl implements MemberService {
}
@Override
// @Cacheable(value = "member::memberId",key = "#p0")
public MemberDTO findById(Long id) {
Member member = memberRepository.findById(id).orElseGet(Member::new);
ValidationUtil.isNull(member.getId(),"Member","id",id);
......@@ -130,7 +116,6 @@ public class MemberServiceImpl implements MemberService {
@Override
@Transactional(rollbackFor = Exception.class)
@AsyncMqSend()
@CacheEvict(value = "member::memberId",key = "#p0.id")
public void update(Member resources) {
RLock rLock = this.redissonClient.getLock("member::update::id" + resources.getId().toString());
try {
......
package com.topdraw.business.basicdata.member.service.mapper;
package com.topdraw.business.module.member.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.module.member.viphistory.domain;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDateTime;
/**
* @author luerlong
* @date 2021-12-10
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="uc_member_vip_history")
public class MemberVipHistory implements Serializable {
// 主键
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 会员id
@Column(name = "member_id")
private Long memberId;
// 会员vip等级
@Column(name = "vip")
private Integer vip;
// 修改之前vip等级
@Column(name = "before_vip")
private Integer beforeVip;
// vip失效时间
@Column(name = "vip_expire_time")
private LocalDateTime vipExpireTime;
// 状态 1正常 0已过期
@Column(name = "status")
private Integer status;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 修改时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(MemberVipHistory source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.member.viphistory.repository;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.time.LocalDateTime;
import java.util.Optional;
/**
* @author luerlong
* @date 2021-12-10
*/
public interface MemberVipHistoryRepository extends JpaRepository<MemberVipHistory, Long>, JpaSpecificationExecutor<MemberVipHistory> {
@Query(value = "SELECT * FROM uc_member_vip_history " +
" WHERE vip_expire_time >= ?2 AND member_id = ?1 order by create_time desc limit 1 ", nativeQuery = true)
Optional<MemberVipHistory> findByTime(Long memberId, LocalDateTime nowTime);
}
package com.topdraw.business.module.member.viphistory.rest;
import com.topdraw.annotation.Log;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryQueryCriteria;
import com.topdraw.common.ResultInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @author luerlong
* @date 2021-12-10
*/
@Api(tags = "MemberVipHistory管理")
@RestController
@RequestMapping("/api/memberVipHistory")
public class MemberVipHistoryController {
@Autowired
private MemberVipHistoryService memberVipHistoryService;
@GetMapping
@ApiOperation("查询MemberVipHistory")
public ResultInfo getMemberVipHistorys(MemberVipHistoryQueryCriteria criteria, Pageable pageable) {
return ResultInfo.successPage(memberVipHistoryService.queryAll(criteria,pageable));
}
@GetMapping(value = "/all")
@ApiOperation("查询所有MemberVipHistory")
public ResultInfo getMemberVipHistorys(MemberVipHistoryQueryCriteria criteria) {
return ResultInfo.success(memberVipHistoryService.queryAll(criteria));
}
@Log
@PostMapping
@ApiOperation("新增MemberVipHistory")
public ResultInfo create(@Validated @RequestBody MemberVipHistory resources) {
memberVipHistoryService.create(resources);
return ResultInfo.success();
}
@Log
@PutMapping
@ApiOperation("修改MemberVipHistory")
public ResultInfo update(@Validated @RequestBody MemberVipHistory resources) {
memberVipHistoryService.update(resources);
return ResultInfo.success();
}
@Log
@DeleteMapping(value = "/{id}")
@ApiOperation("删除MemberVipHistory")
public ResultInfo delete(@PathVariable Long id) {
memberVipHistoryService.delete(id);
return ResultInfo.success();
}
}
package com.topdraw.business.module.member.viphistory.service;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryDTO;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* @author luerlong
* @date 2021-12-10
*/
public interface MemberVipHistoryService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(MemberVipHistoryQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<MemberVipHistoryDTO>
*/
List<MemberVipHistoryDTO> queryAll(MemberVipHistoryQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return MemberVipHistoryDTO
*/
MemberVipHistoryDTO findById(Long id);
void create(MemberVipHistory resources);
void update(MemberVipHistory resources);
void delete(Long id);
MemberVipHistory findByTime(Long id, LocalDateTime nowTime);
}
package com.topdraw.business.module.member.viphistory.service.dto;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDateTime;
/**
* @author luerlong
* @date 2021-12-10
*/
@Data
public class MemberVipHistoryDTO implements Serializable {
// 主键
private Long id;
// 会员id
private Long memberId;
// 会员vip等级
private Integer vip;
// 修改之前vip等级
private Integer beforeVip;
// vip失效时间
private LocalDateTime vipExpireTime;
// 状态 1正常 0已过期
private Integer status;
// 创建时间
private Timestamp createTime;
// 修改时间
private Timestamp updateTime;
}
package com.topdraw.business.module.member.viphistory.service.dto;
import lombok.Data;
/**
* @author luerlong
* @date 2021-12-10
*/
@Data
public class MemberVipHistoryQueryCriteria {
}
package com.topdraw.business.module.member.viphistory.service.impl;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.repository.MemberVipHistoryRepository;
import com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryDTO;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryQueryCriteria;
import com.topdraw.business.module.member.viphistory.service.mapper.MemberVipHistoryMapper;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* @author luerlong
* @date 2021-12-10
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class MemberVipHistoryServiceImpl implements MemberVipHistoryService {
@Autowired
private MemberVipHistoryRepository memberVipHistoryRepository;
@Autowired
private MemberVipHistoryMapper memberVipHistoryMapper;
@Override
public Map<String, Object> queryAll(MemberVipHistoryQueryCriteria criteria, Pageable pageable) {
Page<MemberVipHistory> page = memberVipHistoryRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(memberVipHistoryMapper::toDto));
}
@Override
public List<MemberVipHistoryDTO> queryAll(MemberVipHistoryQueryCriteria criteria) {
return memberVipHistoryMapper.toDto(memberVipHistoryRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
@Override
public MemberVipHistoryDTO findById(Long id) {
MemberVipHistory memberVipHistory = memberVipHistoryRepository.findById(id).orElseGet(MemberVipHistory::new);
ValidationUtil.isNull(memberVipHistory.getId(),"MemberVipHistory","id",id);
return memberVipHistoryMapper.toDto(memberVipHistory);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(MemberVipHistory resources) {
memberVipHistoryRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(MemberVipHistory resources) {
MemberVipHistory memberVipHistory = memberVipHistoryRepository.findById(resources.getId()).orElseGet(MemberVipHistory::new);
ValidationUtil.isNull( memberVipHistory.getId(),"MemberVipHistory","id",resources.getId());
memberVipHistory.copy(resources);
memberVipHistoryRepository.save(memberVipHistory);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
MemberVipHistory memberVipHistory = memberVipHistoryRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", MemberVipHistory.class, id), 1));
memberVipHistoryRepository.delete(memberVipHistory);
}
@Override
public MemberVipHistory findByTime(Long memberId, LocalDateTime nowTime) {
MemberVipHistory memberVipHistory = this.memberVipHistoryRepository.findByTime(memberId, nowTime).orElseGet(MemberVipHistory::new);
return memberVipHistory;
}
}
package com.topdraw.business.module.member.viphistory.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.service.dto.MemberVipHistoryDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author luerlong
* @date 2021-12-10
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MemberVipHistoryMapper extends BaseMapper<MemberVipHistoryDTO, MemberVipHistory> {
}
package com.topdraw.business.basicdata.points.available.domain;
package com.topdraw.business.module.points.available.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
......@@ -11,7 +10,6 @@ import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.UUID;
import java.io.Serializable;
......
package com.topdraw.business.basicdata.points.available.repository;
package com.topdraw.business.module.points.available.repository;
import com.topdraw.business.basicdata.points.available.domain.PointsAvailable;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.module.points.available.domain.PointsAvailable;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableQueryCriteria;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
......
package com.topdraw.business.basicdata.points.available.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.points.available.domain.PointsAvailable;
import com.topdraw.business.basicdata.points.available.service.PointsAvailableService;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
package com.topdraw.business.module.points.available.rest;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.points.available.service;
package com.topdraw.business.module.points.available.service;
import com.topdraw.business.basicdata.points.available.domain.PointsAvailable;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.module.points.available.domain.PointsAvailable;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.points.available.service.dto;
package com.topdraw.business.module.points.available.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.points.available.service.dto;
package com.topdraw.business.module.points.available.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
......
package com.topdraw.business.basicdata.points.available.service.dto;
package com.topdraw.business.module.points.available.service.dto;
public enum PointsAvailableQueryType {
......
package com.topdraw.business.basicdata.points.available.service.impl;
package com.topdraw.business.module.points.available.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.points.available.domain.PointsAvailable;
import com.topdraw.business.module.points.available.domain.PointsAvailable;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.points.available.repository.PointsAvailableRepository;
import com.topdraw.business.basicdata.points.available.service.PointsAvailableService;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.basicdata.points.available.service.mapper.PointsAvailableMapper;
import com.topdraw.business.module.points.available.repository.PointsAvailableRepository;
import com.topdraw.business.module.points.available.service.PointsAvailableService;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.module.points.available.service.mapper.PointsAvailableMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,11 +23,8 @@ import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.points.available.service.mapper;
package com.topdraw.business.module.points.available.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.points.available.domain.PointsAvailable;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.module.points.available.domain.PointsAvailable;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.points.detail.detailhistory.domain;
package com.topdraw.business.module.points.detail.detailhistory.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.points.detail.detailhistory.repository;
package com.topdraw.business.module.points.detail.detailhistory.repository;
import com.topdraw.business.basicdata.points.detail.detailhistory.domain.PointsDetailHistory;
import com.topdraw.business.module.points.detail.detailhistory.domain.PointsDetailHistory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.points.detail.detailhistory.rest;
package com.topdraw.business.module.points.detail.detailhistory.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.points.detail.detailhistory.domain.PointsDetailHistory;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.PointsDetailHistoryService;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.dto.PointsDetailHistoryQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
/**
......
package com.topdraw.business.basicdata.points.detail.detailhistory.service;
package com.topdraw.business.module.points.detail.detailhistory.service;
import com.topdraw.business.basicdata.points.detail.detailhistory.domain.PointsDetailHistory;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.dto.PointsDetailHistoryDTO;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.dto.PointsDetailHistoryQueryCriteria;
import com.topdraw.business.module.points.detail.detailhistory.domain.PointsDetailHistory;
import com.topdraw.business.module.points.detail.detailhistory.service.dto.PointsDetailHistoryDTO;
import com.topdraw.business.module.points.detail.detailhistory.service.dto.PointsDetailHistoryQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.points.detail.detailhistory.service.dto;
package com.topdraw.business.module.points.detail.detailhistory.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.points.detail.detailhistory.service.impl;
package com.topdraw.business.module.points.detail.detailhistory.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.points.detail.detailhistory.domain.PointsDetailHistory;
import com.topdraw.business.module.points.detail.detailhistory.domain.PointsDetailHistory;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.points.detail.detailhistory.repository.PointsDetailHistoryRepository;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.PointsDetailHistoryService;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.dto.PointsDetailHistoryDTO;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.dto.PointsDetailHistoryQueryCriteria;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.mapper.PointsDetailHistoryMapper;
import com.topdraw.business.module.points.detail.detailhistory.repository.PointsDetailHistoryRepository;
import com.topdraw.business.module.points.detail.detailhistory.service.PointsDetailHistoryService;
import com.topdraw.business.module.points.detail.detailhistory.service.dto.PointsDetailHistoryDTO;
import com.topdraw.business.module.points.detail.detailhistory.service.dto.PointsDetailHistoryQueryCriteria;
import com.topdraw.business.module.points.detail.detailhistory.service.mapper.PointsDetailHistoryMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......
package com.topdraw.business.basicdata.points.detail.detailhistory.service.mapper;
package com.topdraw.business.module.points.detail.detailhistory.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.points.detail.detailhistory.domain.PointsDetailHistory;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.dto.PointsDetailHistoryDTO;
import com.topdraw.business.module.points.detail.detailhistory.domain.PointsDetailHistory;
import com.topdraw.business.module.points.detail.detailhistory.service.dto.PointsDetailHistoryDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.points.detail.domain;
package com.topdraw.business.module.points.detail.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.points.detail.repository;
package com.topdraw.business.module.points.detail.repository;
import com.topdraw.business.basicdata.points.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.domain.PointsDetail;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.Date;
import java.util.List;
import java.util.Optional;
......
package com.topdraw.business.basicdata.points.detail.rest;
package com.topdraw.business.module.points.detail.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.points.detail.domain.PointsDetail;
import com.topdraw.business.basicdata.points.detail.service.PointsDetailService;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
/**
......
package com.topdraw.business.basicdata.points.detail.service;
package com.topdraw.business.module.points.detail.service;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.basicdata.points.detail.domain.PointsDetail;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailDTO;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailQueryCriteria;
import com.topdraw.business.module.points.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.service.dto.PointsDetailDTO;
import com.topdraw.business.module.points.detail.service.dto.PointsDetailQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Date;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.points.detail.service.dto;
package com.topdraw.business.module.points.detail.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.points.detail.service.dto;
package com.topdraw.business.module.points.detail.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
......
package com.topdraw.business.basicdata.points.detail.service.impl;
package com.topdraw.business.module.points.detail.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.points.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.domain.PointsDetail;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.points.detail.repository.PointsDetailRepository;
import com.topdraw.business.basicdata.points.detail.service.PointsDetailService;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailDTO;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailQueryCriteria;
import com.topdraw.business.basicdata.points.detail.service.mapper.PointsDetailMapper;
import com.topdraw.business.module.points.detail.repository.PointsDetailRepository;
import com.topdraw.business.module.points.detail.service.PointsDetailService;
import com.topdraw.business.module.points.detail.service.dto.PointsDetailDTO;
import com.topdraw.business.module.points.detail.service.dto.PointsDetailQueryCriteria;
import com.topdraw.business.module.points.detail.service.mapper.PointsDetailMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -20,7 +20,6 @@ import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
......
package com.topdraw.business.basicdata.points.detail.service.mapper;
package com.topdraw.business.module.points.detail.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.points.detail.domain.PointsDetail;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailDTO;
import com.topdraw.business.module.points.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.service.dto.PointsDetailDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.points.domain;
package com.topdraw.business.module.points.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.points.repository;
package com.topdraw.business.module.points.repository;
import com.topdraw.business.basicdata.points.domain.Points;
import com.topdraw.business.module.points.domain.Points;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.points.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.points.domain.Points;
import com.topdraw.business.basicdata.points.service.PointsService;
import com.topdraw.business.basicdata.points.service.dto.PointsQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
package com.topdraw.business.module.points.rest;
import io.swagger.annotations.*;
/**
......
package com.topdraw.business.basicdata.points.service;
package com.topdraw.business.module.points.service;
import com.topdraw.business.basicdata.points.domain.Points;
import com.topdraw.business.basicdata.points.service.dto.PointsDTO;
import com.topdraw.business.basicdata.points.service.dto.PointsQueryCriteria;
import com.topdraw.business.module.points.domain.Points;
import com.topdraw.business.module.points.service.dto.PointsDTO;
import com.topdraw.business.module.points.service.dto.PointsQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.points.service.dto;
package com.topdraw.business.module.points.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.points.service.impl;
package com.topdraw.business.module.points.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.points.domain.Points;
import com.topdraw.business.module.points.domain.Points;
import com.topdraw.util.RedissonUtil;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.points.repository.PointsRepository;
import com.topdraw.business.basicdata.points.service.PointsService;
import com.topdraw.business.basicdata.points.service.dto.PointsDTO;
import com.topdraw.business.basicdata.points.service.dto.PointsQueryCriteria;
import com.topdraw.business.basicdata.points.service.mapper.PointsMapper;
import com.topdraw.business.module.points.repository.PointsRepository;
import com.topdraw.business.module.points.service.PointsService;
import com.topdraw.business.module.points.service.dto.PointsDTO;
import com.topdraw.business.module.points.service.dto.PointsQueryCriteria;
import com.topdraw.business.module.points.service.mapper.PointsMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.business.basicdata.points.service.mapper;
package com.topdraw.business.module.points.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.points.domain.Points;
import com.topdraw.business.basicdata.points.service.dto.PointsDTO;
import com.topdraw.business.module.points.domain.Points;
import com.topdraw.business.module.points.service.dto.PointsDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.points.standingbook.domain;
package com.topdraw.business.module.points.standingbook.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.points.standingbook.repository;
package com.topdraw.business.module.points.standingbook.repository;
import com.topdraw.business.basicdata.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.module.points.standingbook.domain.PointsStandingBook;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.Optional;
/**
* @author XiangHan
* @date 2021-10-29
......
package com.topdraw.business.basicdata.points.standingbook.rest;
package com.topdraw.business.module.points.standingbook.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.basicdata.points.standingbook.service.PointsStandingBookService;
import com.topdraw.business.basicdata.points.standingbook.service.dto.PointsStandingBookQueryCriteria;
import com.topdraw.business.module.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.module.points.standingbook.service.PointsStandingBookService;
import com.topdraw.business.module.points.standingbook.service.dto.PointsStandingBookQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.points.standingbook.service;
package com.topdraw.business.module.points.standingbook.service;
import com.topdraw.business.basicdata.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.basicdata.points.standingbook.service.dto.PointsStandingBookDTO;
import com.topdraw.business.basicdata.points.standingbook.service.dto.PointsStandingBookQueryCriteria;
import com.topdraw.business.module.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.module.points.standingbook.service.dto.PointsStandingBookDTO;
import com.topdraw.business.module.points.standingbook.service.dto.PointsStandingBookQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.points.standingbook.service.dto;
package com.topdraw.business.module.points.standingbook.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.points.standingbook.service.dto;
package com.topdraw.business.module.points.standingbook.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.points.standingbook.service.impl;
package com.topdraw.business.module.points.standingbook.service.impl;
import com.topdraw.business.basicdata.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.module.points.standingbook.domain.PointsStandingBook;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.FileUtil;
import com.topdraw.business.basicdata.points.standingbook.repository.PointsStandingBookRepository;
import com.topdraw.business.basicdata.points.standingbook.service.PointsStandingBookService;
import com.topdraw.business.basicdata.points.standingbook.service.dto.PointsStandingBookDTO;
import com.topdraw.business.basicdata.points.standingbook.service.dto.PointsStandingBookQueryCriteria;
import com.topdraw.business.basicdata.points.standingbook.service.mapper.PointsStandingBookMapper;
import com.topdraw.business.module.points.standingbook.repository.PointsStandingBookRepository;
import com.topdraw.business.module.points.standingbook.service.PointsStandingBookService;
import com.topdraw.business.module.points.standingbook.service.dto.PointsStandingBookDTO;
import com.topdraw.business.module.points.standingbook.service.dto.PointsStandingBookQueryCriteria;
import com.topdraw.business.module.points.standingbook.service.mapper.PointsStandingBookMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -18,14 +17,9 @@ import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.points.standingbook.service.mapper;
package com.topdraw.business.module.points.standingbook.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.basicdata.points.standingbook.service.dto.PointsStandingBookDTO;
import com.topdraw.business.module.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.module.points.standingbook.service.dto.PointsStandingBookDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.rights.domain;
package com.topdraw.business.module.rights.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.rights.history.domain;
package com.topdraw.business.module.rights.history.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.rights.history.repository;
package com.topdraw.business.module.rights.history.repository;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.module.rights.history.domain.RightsHistory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.rights.history.rest;
package com.topdraw.business.module.rights.history.rest;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryQueryType;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.basicdata.rights.history.service.RightsHistoryService;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.business.module.rights.history.service.RightsHistoryService;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.util.TimestampUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
......
package com.topdraw.business.basicdata.rights.history.service;
package com.topdraw.business.module.rights.history.service;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryDTO;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.business.module.rights.history.domain.RightsHistory;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryDTO;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.rights.history.service.dto;
package com.topdraw.business.module.rights.history.service.dto;
import lombok.Data;
import javax.persistence.Column;
import java.sql.Timestamp;
import java.io.Serializable;
import java.time.LocalDateTime;
......
package com.topdraw.business.basicdata.rights.history.service.dto;
package com.topdraw.business.module.rights.history.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
......
package com.topdraw.business.basicdata.rights.history.service.dto;
package com.topdraw.business.module.rights.history.service.dto;
public enum RightsHistoryQueryType {
......
package com.topdraw.business.basicdata.rights.history.service.impl;
package com.topdraw.business.module.rights.history.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.module.rights.history.domain.RightsHistory;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.rights.history.repository.RightsHistoryRepository;
import com.topdraw.business.basicdata.rights.history.service.RightsHistoryService;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryDTO;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.business.basicdata.rights.history.service.mapper.RightsHistoryMapper;
import com.topdraw.business.module.rights.history.repository.RightsHistoryRepository;
import com.topdraw.business.module.rights.history.service.RightsHistoryService;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryDTO;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.business.module.rights.history.service.mapper.RightsHistoryMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......
package com.topdraw.business.basicdata.rights.history.service.mapper;
package com.topdraw.business.module.rights.history.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryDTO;
import com.topdraw.business.module.rights.history.domain.RightsHistory;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.rights.permanentrights.domain;
package com.topdraw.business.module.rights.permanentrights.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.rights.permanentrights.repository;
package com.topdraw.business.module.rights.permanentrights.repository;
import com.topdraw.business.basicdata.rights.permanentrights.domain.PermanentRights;
import com.topdraw.business.module.rights.permanentrights.domain.PermanentRights;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.rights.permanentrights.rest;
package com.topdraw.business.module.rights.permanentrights.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.rights.permanentrights.domain.PermanentRights;
import com.topdraw.business.basicdata.rights.permanentrights.service.PermanentRightsService;
import com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsQueryCriteria;
import com.topdraw.business.module.rights.permanentrights.domain.PermanentRights;
import com.topdraw.business.module.rights.permanentrights.service.PermanentRightsService;
import com.topdraw.business.module.rights.permanentrights.service.dto.PermanentRightsQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
......
package com.topdraw.business.basicdata.rights.permanentrights.service;
package com.topdraw.business.module.rights.permanentrights.service;
import com.topdraw.business.basicdata.rights.permanentrights.domain.PermanentRights;
import com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsDTO;
import com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsQueryCriteria;
import com.topdraw.business.module.rights.permanentrights.domain.PermanentRights;
import com.topdraw.business.module.rights.permanentrights.service.dto.PermanentRightsDTO;
import com.topdraw.business.module.rights.permanentrights.service.dto.PermanentRightsQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.rights.permanentrights.service.dto;
package com.topdraw.business.module.rights.permanentrights.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.rights.permanentrights.service.dto;
package com.topdraw.business.module.rights.permanentrights.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
......
package com.topdraw.business.basicdata.rights.permanentrights.service.impl;
package com.topdraw.business.module.rights.permanentrights.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.rights.permanentrights.domain.PermanentRights;
import com.topdraw.business.module.rights.permanentrights.domain.PermanentRights;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.rights.permanentrights.repository.PermanentRightsRepository;
import com.topdraw.business.basicdata.rights.permanentrights.service.PermanentRightsService;
import com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsDTO;
import com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsQueryCriteria;
import com.topdraw.business.basicdata.rights.permanentrights.service.mapper.PermanentRightsMapper;
import com.topdraw.business.module.rights.permanentrights.repository.PermanentRightsRepository;
import com.topdraw.business.module.rights.permanentrights.service.PermanentRightsService;
import com.topdraw.business.module.rights.permanentrights.service.dto.PermanentRightsDTO;
import com.topdraw.business.module.rights.permanentrights.service.dto.PermanentRightsQueryCriteria;
import com.topdraw.business.module.rights.permanentrights.service.mapper.PermanentRightsMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......
package com.topdraw.business.basicdata.rights.permanentrights.service.mapper;
package com.topdraw.business.module.rights.permanentrights.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.rights.permanentrights.domain.PermanentRights;
import com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsDTO;
import com.topdraw.business.module.rights.permanentrights.domain.PermanentRights;
import com.topdraw.business.module.rights.permanentrights.service.dto.PermanentRightsDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.rights.repository;
package com.topdraw.business.module.rights.repository;
import com.topdraw.business.basicdata.rights.domain.Rights;
import com.topdraw.business.basicdata.rights.service.dto.RightsDTO;
import com.topdraw.business.module.rights.domain.Rights;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
......
package com.topdraw.business.basicdata.rights.rest;
package com.topdraw.business.module.rights.rest;
import com.topdraw.business.basicdata.rights.service.RightsService;
import com.topdraw.business.basicdata.rights.service.dto.RightsQueryCriteria;
import com.topdraw.business.module.rights.service.RightsService;
import com.topdraw.common.ResultInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
......
package com.topdraw.business.basicdata.rights.service;
package com.topdraw.business.module.rights.service;
import com.topdraw.business.basicdata.rights.domain.Rights;
import com.topdraw.business.basicdata.rights.service.dto.RightsDTO;
import com.topdraw.business.basicdata.rights.service.dto.RightsQueryCriteria;
import com.topdraw.business.module.rights.domain.Rights;
import com.topdraw.business.module.rights.service.dto.RightsDTO;
import com.topdraw.business.module.rights.service.dto.RightsQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.rights.service.dto;
package com.topdraw.business.module.rights.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.rights.service.dto;
package com.topdraw.business.module.rights.service.dto;
import com.topdraw.annotation.Query;
import lombok.Data;
......
package com.topdraw.business.basicdata.rights.service.impl;
package com.topdraw.business.module.rights.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.rights.domain.Rights;
import com.topdraw.business.module.rights.domain.Rights;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.rights.repository.RightsRepository;
import com.topdraw.business.basicdata.rights.service.RightsService;
import com.topdraw.business.basicdata.rights.service.dto.RightsDTO;
import com.topdraw.business.basicdata.rights.service.dto.RightsQueryCriteria;
import com.topdraw.business.basicdata.rights.service.mapper.RightsMapper;
import com.topdraw.business.module.rights.repository.RightsRepository;
import com.topdraw.business.module.rights.service.RightsService;
import com.topdraw.business.module.rights.service.dto.RightsDTO;
import com.topdraw.business.module.rights.service.dto.RightsQueryCriteria;
import com.topdraw.business.module.rights.service.mapper.RightsMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.business.basicdata.rights.service.mapper;
package com.topdraw.business.module.rights.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.rights.domain.Rights;
import com.topdraw.business.basicdata.rights.service.dto.RightsDTO;
import com.topdraw.business.module.rights.domain.Rights;
import com.topdraw.business.module.rights.service.dto.RightsDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.module.task.attribute.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-01-13
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="tr_task_attr")
public class TaskAttr implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 任务id(关联task主键)
@Column(name = "task_id")
private Long taskId;
// 任务属性字符串
@Column(name = "attr_str")
private String attrStr;
public void copy(TaskAttr source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.task.attribute.repository;
import com.topdraw.business.module.task.attribute.domain.TaskAttr;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.Optional;
/**
* @author XiangHan
* @date 2022-01-13
*/
public interface TaskAttrRepository extends JpaRepository<TaskAttr, Long>, JpaSpecificationExecutor<TaskAttr> {
Optional<TaskAttr> findByTaskId(Long taskId);
}
package com.topdraw.business.module.task.attribute.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.module.task.attribute.domain.TaskAttr;
import com.topdraw.business.module.task.attribute.service.TaskAttrService;
import com.topdraw.business.module.task.attribute.service.dto.TaskAttrQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
* @date 2022-01-13
*/
@Api(tags = "TaskAttr管理")
@RestController
@RequestMapping("/api/TaskAttr")
public class TaskAttrController {
@Autowired
private TaskAttrService TaskAttrService;
@GetMapping
@ApiOperation("查询TaskAttr")
public ResultInfo getTaskAttrs(TaskAttrQueryCriteria criteria, Pageable pageable) {
return ResultInfo.successPage(TaskAttrService.queryAll(criteria,pageable));
}
@GetMapping(value = "/all")
@ApiOperation("查询所有TaskAttr")
public ResultInfo getTaskAttrs(TaskAttrQueryCriteria criteria) {
return ResultInfo.success(TaskAttrService.queryAll(criteria));
}
@Log
@PostMapping
@ApiOperation("新增TaskAttr")
public ResultInfo create(@Validated @RequestBody TaskAttr resources) {
TaskAttrService.create(resources);
return ResultInfo.success();
}
@Log
@PutMapping
@ApiOperation("修改TaskAttr")
public ResultInfo update(@Validated @RequestBody TaskAttr resources) {
TaskAttrService.update(resources);
return ResultInfo.success();
}
@Log
@DeleteMapping(value = "/{id}")
@ApiOperation("删除TaskAttr")
public ResultInfo delete(@PathVariable Long id) {
TaskAttrService.delete(id);
return ResultInfo.success();
}
}
package com.topdraw.business.module.task.attribute.service;
import com.topdraw.business.module.task.attribute.domain.TaskAttr;
import com.topdraw.business.module.task.attribute.service.dto.TaskAttrDTO;
import com.topdraw.business.module.task.attribute.service.dto.TaskAttrQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
* @date 2022-01-13
*/
public interface TaskAttrService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(TaskAttrQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<TaskAttrDTO>
*/
List<TaskAttrDTO> queryAll(TaskAttrQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return TaskAttrDTO
*/
TaskAttrDTO findById(Long id);
void create(TaskAttr resources);
void update(TaskAttr resources);
void delete(Long id);
TaskAttrDTO findByTaskId(Long taskId);
}
package com.topdraw.business.module.task.attribute.service.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-01-13
*/
@Data
public class TaskAttrDTO implements Serializable {
private Long id;
// 任务id(关联task主键)
private Long taskId;
// 任务属性字符串
private String attrStr;
}
package com.topdraw.business.module.task.attribute.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
/**
* @author XiangHan
* @date 2022-01-13
*/
@Data
public class TaskAttrQueryCriteria{
}
package com.topdraw.business.module.task.attribute.service.impl;
import com.topdraw.business.module.task.attribute.domain.TaskAttr;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.FileUtil;
import com.topdraw.business.module.task.attribute.repository.TaskAttrRepository;
import com.topdraw.business.module.task.attribute.service.TaskAttrService;
import com.topdraw.business.module.task.attribute.service.dto.TaskAttrDTO;
import com.topdraw.business.module.task.attribute.service.dto.TaskAttrQueryCriteria;
import com.topdraw.business.module.task.attribute.service.mapper.TaskAttrMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @author XiangHan
* @date 2022-01-13
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class TaskAttrServiceImpl implements TaskAttrService {
@Autowired
private TaskAttrRepository TaskAttrRepository;
@Autowired
private TaskAttrMapper TaskAttrMapper;
@Override
public Map<String, Object> queryAll(TaskAttrQueryCriteria criteria, Pageable pageable) {
Page<TaskAttr> page = TaskAttrRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(TaskAttrMapper::toDto));
}
@Override
public List<TaskAttrDTO> queryAll(TaskAttrQueryCriteria criteria) {
return TaskAttrMapper.toDto(TaskAttrRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
@Override
public TaskAttrDTO findById(Long id) {
TaskAttr TaskAttr = TaskAttrRepository.findById(id).orElseGet(TaskAttr::new);
ValidationUtil.isNull(TaskAttr.getId(),"TaskAttr","id",id);
return TaskAttrMapper.toDto(TaskAttr);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(TaskAttr resources) {
TaskAttrRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(TaskAttr resources) {
TaskAttr TaskAttr = TaskAttrRepository.findById(resources.getId()).orElseGet(TaskAttr::new);
ValidationUtil.isNull( TaskAttr.getId(),"TaskAttr","id",resources.getId());
TaskAttr.copy(resources);
TaskAttrRepository.save(TaskAttr);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
TaskAttr TaskAttr = TaskAttrRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", TaskAttr.class, id), 1));
TaskAttrRepository.delete(TaskAttr);
}
@Override
public TaskAttrDTO findByTaskId(Long taskId) {
TaskAttr TaskAttr = TaskAttrRepository.findByTaskId(taskId).orElseGet(TaskAttr::new);
return TaskAttrMapper.toDto(TaskAttr);
}
}
package com.topdraw.business.module.task.attribute.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.task.attribute.domain.TaskAttr;
import com.topdraw.business.module.task.attribute.service.dto.TaskAttrDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-01-13
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface TaskAttrMapper extends BaseMapper<TaskAttrDTO, TaskAttr> {
}
package com.topdraw.business.basicdata.task.domain;
package com.topdraw.business.module.task.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.task.progress.domain;
package com.topdraw.business.module.task.progress.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.topdraw.business.basicdata.task.progress.repository;
package com.topdraw.business.module.task.progress.repository;
import com.topdraw.business.basicdata.task.progress.domain.TrTaskProgress;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressDTO;
import com.topdraw.business.module.task.progress.domain.TrTaskProgress;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.task.progress.rest;
package com.topdraw.business.module.task.progress.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.task.progress.domain.TrTaskProgress;
import com.topdraw.business.basicdata.task.progress.service.TrTaskProgressService;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressQueryCriteria;
import com.topdraw.business.module.task.progress.domain.TrTaskProgress;
import com.topdraw.business.module.task.progress.service.TrTaskProgressService;
import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.task.progress.service;
package com.topdraw.business.module.task.progress.service;
import com.topdraw.business.basicdata.task.progress.domain.TrTaskProgress;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressDTO;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressQueryCriteria;
import com.topdraw.business.module.task.progress.domain.TrTaskProgress;
import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO;
import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.task.progress.service.dto;
package com.topdraw.business.module.task.progress.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.task.progress.service.dto;
package com.topdraw.business.module.task.progress.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
import java.sql.Timestamp;
/**
* @author XiangHan
* @date 2021-11-02
......
package com.topdraw.business.basicdata.task.progress.service.impl;
package com.topdraw.business.module.task.progress.service.impl;
import com.topdraw.business.basicdata.task.progress.domain.TrTaskProgress;
import com.topdraw.business.module.task.progress.domain.TrTaskProgress;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.FileUtil;
import com.topdraw.business.basicdata.task.progress.repository.TrTaskProgressRepository;
import com.topdraw.business.basicdata.task.progress.service.TrTaskProgressService;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressDTO;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressQueryCriteria;
import com.topdraw.business.basicdata.task.progress.service.mapper.TrTaskProgressMapper;
import com.topdraw.business.module.task.progress.repository.TrTaskProgressRepository;
import com.topdraw.business.module.task.progress.service.TrTaskProgressService;
import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO;
import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressQueryCriteria;
import com.topdraw.business.module.task.progress.service.mapper.TrTaskProgressMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -18,14 +17,9 @@ import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.task.progress.service.mapper;
package com.topdraw.business.module.task.progress.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.task.progress.domain.TrTaskProgress;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressDTO;
import com.topdraw.business.module.task.progress.domain.TrTaskProgress;
import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.task.repository;
package com.topdraw.business.module.task.repository;
import com.topdraw.business.basicdata.task.domain.Task;
import com.topdraw.business.module.task.domain.Task;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.topdraw.business.basicdata.task.rest;
package com.topdraw.business.module.task.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.task.domain.Task;
import com.topdraw.business.basicdata.task.service.TaskService;
import com.topdraw.business.basicdata.task.service.dto.TaskQueryCriteria;
import com.topdraw.business.module.task.domain.Task;
import com.topdraw.business.module.task.service.TaskService;
import com.topdraw.business.module.task.service.dto.TaskQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
......
package com.topdraw.business.basicdata.task.service;
package com.topdraw.business.module.task.service;
import com.topdraw.business.basicdata.task.domain.Task;
import com.topdraw.business.basicdata.task.service.dto.TaskDTO;
import com.topdraw.business.basicdata.task.service.dto.TaskQueryCriteria;
import com.topdraw.business.module.task.domain.Task;
import com.topdraw.business.module.task.service.dto.TaskDTO;
import com.topdraw.business.module.task.service.dto.TaskQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......
package com.topdraw.business.basicdata.task.service.dto;
package com.topdraw.business.module.task.service.dto;
import lombok.Data;
import javax.persistence.Column;
import java.sql.Timestamp;
import java.io.Serializable;
import java.time.LocalDateTime;
......
package com.topdraw.business.basicdata.task.service.impl;
package com.topdraw.business.module.task.service.impl;
import com.topdraw.business.basicdata.task.domain.Task;
import com.topdraw.utils.StringUtils;
import com.topdraw.business.module.task.domain.Task;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.task.repository.TaskRepository;
import com.topdraw.business.basicdata.task.service.TaskService;
import com.topdraw.business.basicdata.task.service.dto.TaskDTO;
import com.topdraw.business.basicdata.task.service.dto.TaskQueryCriteria;
import com.topdraw.business.basicdata.task.service.mapper.TaskMapper;
import com.topdraw.business.module.task.repository.TaskRepository;
import com.topdraw.business.module.task.service.TaskService;
import com.topdraw.business.module.task.service.dto.TaskDTO;
import com.topdraw.business.module.task.service.dto.TaskQueryCriteria;
import com.topdraw.business.module.task.service.mapper.TaskMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
......
package com.topdraw.business.basicdata.task.service.mapper;
package com.topdraw.business.module.task.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.task.domain.Task;
import com.topdraw.business.basicdata.task.service.dto.TaskDTO;
import com.topdraw.business.module.task.domain.Task;
import com.topdraw.business.module.task.service.dto.TaskDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.task.template.domain;
package com.topdraw.business.module.task.template.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.task.template.repository;
package com.topdraw.business.module.task.template.repository;
import com.topdraw.business.basicdata.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
import java.util.Optional;
/**
......@@ -16,5 +17,5 @@ public interface TaskTemplateRepository extends JpaRepository<TaskTemplate, Long
TaskTemplate findByEvent(String event);
TaskTemplate findByType(Integer event);
List<TaskTemplate> findByType(Integer event);
}
......
package com.topdraw.business.basicdata.task.template.rest;
package com.topdraw.business.module.task.template.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.task.template.domain.TaskTemplate;
import com.topdraw.business.basicdata.task.template.service.TaskTemplateService;
import com.topdraw.business.basicdata.task.template.service.dto.TaskTemplateQueryCriteria;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.service.TaskTemplateService;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
......
package com.topdraw.business.basicdata.task.template.service;
package com.topdraw.business.module.task.template.service;
import com.topdraw.business.basicdata.task.template.domain.TaskTemplate;
import com.topdraw.business.basicdata.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.basicdata.task.template.service.dto.TaskTemplateQueryCriteria;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
......@@ -50,5 +50,5 @@ public interface TaskTemplateService {
TaskTemplate findByEvent(String event);
TaskTemplate findByType(Integer event);
List<TaskTemplate> findByType(Integer event);
}
......
package com.topdraw.business.basicdata.task.template.service.dto;
package com.topdraw.business.module.task.template.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......
package com.topdraw.business.basicdata.task.template.service.impl;
package com.topdraw.business.module.task.template.service.impl;
import com.topdraw.business.basicdata.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.task.template.repository.TaskTemplateRepository;
import com.topdraw.business.basicdata.task.template.service.TaskTemplateService;
import com.topdraw.business.basicdata.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.basicdata.task.template.service.dto.TaskTemplateQueryCriteria;
import com.topdraw.business.basicdata.task.template.service.mapper.TaskTemplateMapper;
import com.topdraw.business.module.task.template.repository.TaskTemplateRepository;
import com.topdraw.business.module.task.template.service.TaskTemplateService;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateQueryCriteria;
import com.topdraw.business.module.task.template.service.mapper.TaskTemplateMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
......@@ -95,7 +94,7 @@ public class TaskTemplateServiceImpl implements TaskTemplateService {
// @Cacheable(cacheNames = "uc-admin_taskTemplate" , key = "#event")
@Override
public TaskTemplate findByType(Integer event) {
public List<TaskTemplate> findByType(Integer event) {
return Objects.nonNull(event) ? this.TaskTemplateRepository.findByType(event) : null;
}
}
......
package com.topdraw.business.basicdata.task.template.service.mapper;
package com.topdraw.business.module.task.template.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.task.template.domain.TaskTemplate;
import com.topdraw.business.basicdata.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.module.user.iptv.domain;
import java.util.Arrays;
import java.util.List;
public interface UserConstant {
// 电信
List<String> platform_lt = Arrays.asList("SC.CTCC","SC.CTC","CTC.ChongQing","ChongQing.CTC","CQ.CTC","CQ.CTCC");
// 移动
List<String> platform_yd = Arrays.asList("SC.CMCC","CMCC.SC","ChongQing.CMCC","CMCC.ChongQing");
// 联通
List<String> platform_dx = Arrays.asList("SC.CUCC","");
}
package com.topdraw.business.basicdata.user.iptv.domain;
package com.topdraw.business.module.user.iptv.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......@@ -23,6 +23,10 @@ import java.io.Serializable;
@Table(name="uc_user_tv")
public class UserTv implements Serializable {
/** 绑定的小屏账户会员编码 */
@Column(name = "priority_member_code")
private String priorityMemberCode;
@Transient
private String memberCode;
......@@ -119,6 +123,6 @@ public class UserTv implements Serializable {
private Long memberId;
public void copy(UserTv source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(false));
}
}
......
package com.topdraw.business.basicdata.user.iptv.repository;
package com.topdraw.business.module.user.iptv.repository;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......@@ -13,4 +13,6 @@ import java.util.Optional;
public interface UserTvRepository extends JpaRepository<UserTv, Long>, JpaSpecificationExecutor<UserTv> {
Optional<UserTv> findByPlatformAccount(String platformAccount);
Optional<UserTv> findByPriorityMemberCode(String memberCode);
}
......
package com.topdraw.business.basicdata.user.iptv.rest;
package com.topdraw.business.module.user.iptv.rest;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.basicdata.user.iptv.service.UserTvService;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvQueryCriteria;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.service.UserTvService;
import com.topdraw.business.module.user.iptv.service.dto.UserTvQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.Assert;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import java.util.Objects;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.user.iptv.service;
package com.topdraw.business.module.user.iptv.service;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvQueryCriteria;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.iptv.service.dto.UserTvQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......@@ -45,5 +43,5 @@ public interface UserTvService {
UserTvDTO findByPlatformAccount(String platformAccount);
UserTvDTO findByPriorityMemberCode(String memberCode);
}
......
package com.topdraw.business.basicdata.user.iptv.service.dto;
package com.topdraw.business.module.user.iptv.service.dto;
import lombok.Data;
import java.sql.Timestamp;
......@@ -12,6 +12,9 @@ import java.io.Serializable;
@Data
public class UserTvDTO implements Serializable {
/** 绑定的小屏账户会员编码 */
private String priorityMemberCode;
// ID
private Long id;
......
package com.topdraw.business.basicdata.user.iptv.service.dto;
package com.topdraw.business.module.user.iptv.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.user.iptv.service.impl;
package com.topdraw.business.module.user.iptv.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.config.LocalConstants;
import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.StringUtils;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.basicdata.user.iptv.repository.UserTvRepository;
import com.topdraw.business.basicdata.user.iptv.service.UserTvService;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvQueryCriteria;
import com.topdraw.business.basicdata.user.iptv.service.mapper.UserTvMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import com.topdraw.business.module.user.iptv.repository.UserTvRepository;
import com.topdraw.business.module.user.iptv.service.UserTvService;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.iptv.service.dto.UserTvQueryCriteria;
import com.topdraw.business.module.user.iptv.service.mapper.UserTvMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -114,5 +105,15 @@ public class UserTvServiceImpl implements UserTvService {
return null;
}
@Override
public UserTvDTO findByPriorityMemberCode(String memberCode) {
Optional<UserTv> userTv = UserTvRepository.findByPriorityMemberCode(memberCode);
if (userTv.isPresent()) {
ValidationUtil.isNull( userTv.get().getId(),"UserTv","id",userTv.get().getId());
return UserTvMapper.toDto(userTv.get());
}
return null;
}
}
......
package com.topdraw.business.basicdata.user.iptv.service.mapper;
package com.topdraw.business.module.user.iptv.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
package com.topdraw.business.basicdata.user.weixin.domain;
package com.topdraw.business.module.user.weixin.domain;
import lombok.Data;
import lombok.experimental.Accessors;
......
package com.topdraw.business.basicdata.user.weixin.repository;
package com.topdraw.business.module.user.weixin.repository;
import com.topdraw.business.basicdata.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......@@ -12,4 +12,13 @@ import java.util.Optional;
*/
public interface UserWeixinRepository extends JpaRepository<UserWeixin, Long>, JpaSpecificationExecutor<UserWeixin> {
Optional<UserWeixin> findFirstByMemberIdAndAppid(Long memberId, String appid);
Optional<UserWeixin> findFirstByUnionidAndAppidAndOpenid(String unionId, String appId, String openId);
Optional<UserWeixin> findFirstByAppidAndOpenid(String appId, String openId);
Optional<UserWeixin> findFirstByUnionid(String unionid);
Optional<UserWeixin> findFirstByUnionidAndAppid(String unionid, String appId);
}
......
package com.topdraw.business.basicdata.user.weixin.rest;
package com.topdraw.business.module.user.weixin.rest;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.user.weixin.domain.UserWeixin;
import com.topdraw.business.basicdata.user.weixin.service.UserWeixinService;
import com.topdraw.business.basicdata.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* @author XiangHan
......
package com.topdraw.business.basicdata.user.weixin.service;
package com.topdraw.business.module.user.weixin.service;
import com.topdraw.business.basicdata.user.weixin.domain.UserWeixin;
import com.topdraw.business.basicdata.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.basicdata.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.Optional;
/**
* @author XiangHan
......@@ -37,10 +36,19 @@ public interface UserWeixinService {
*/
UserWeixinDTO findById(Long id);
void create(UserWeixin resources);
UserWeixin create(UserWeixin resources);
void update(UserWeixin resources);
void delete(Long id);
UserWeixinDTO findFirstByMemberIdAndAppid(Long memberId, String appid);
UserWeixinDTO findFirstByUnionIdAndAppIdAndOpenId(String unionId, String appId, String openId);
UserWeixinDTO findFirstByAppIdAndOpenId(String appId, String openId);
UserWeixinDTO findFirstByUnionId(String unionid);
UserWeixinDTO findFirstByUnionidAndAppid(String unionid, String appId);
}
......
package com.topdraw.business.basicdata.user.weixin.service.dto;
package com.topdraw.business.module.user.weixin.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Timestamp;
import java.io.Serializable;
......
package com.topdraw.business.basicdata.user.weixin.service.dto;
package com.topdraw.business.module.user.weixin.service.dto;
import lombok.Data;
import com.topdraw.annotation.Query;
/**
* @author XiangHan
......@@ -9,4 +8,7 @@ import com.topdraw.annotation.Query;
*/
@Data
public class UserWeixinQueryCriteria{
}
......
package com.topdraw.business.basicdata.user.weixin.service.impl;
package com.topdraw.business.module.user.weixin.service.impl;
import com.topdraw.business.basicdata.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.utils.FileUtil;
import com.topdraw.business.basicdata.user.weixin.repository.UserWeixinRepository;
import com.topdraw.business.basicdata.user.weixin.service.UserWeixinService;
import com.topdraw.business.basicdata.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.basicdata.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.basicdata.user.weixin.service.mapper.UserWeixinMapper;
import com.topdraw.business.module.user.weixin.repository.UserWeixinRepository;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.module.user.weixin.service.mapper.UserWeixinMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
......@@ -18,14 +17,9 @@ import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.utils.StringUtils;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @author XiangHan
......@@ -61,8 +55,9 @@ public class UserWeixinServiceImpl implements UserWeixinService {
@Override
@Transactional(rollbackFor = Exception.class)
public void create(UserWeixin resources) {
public UserWeixin create(UserWeixin resources) {
UserWeixinRepository.save(resources);
return resources;
}
@Override
......@@ -83,5 +78,36 @@ public class UserWeixinServiceImpl implements UserWeixinService {
UserWeixinRepository.delete(UserWeixin);
}
@Override
public UserWeixinDTO findFirstByMemberIdAndAppid(Long memberId, String appid) {
UserWeixin userWeixin = this.UserWeixinRepository.findFirstByMemberIdAndAppid(memberId, appid).orElseGet(UserWeixin::new);
ValidationUtil.isNull(userWeixin.getId(),"UserWeixin","id",memberId);
return UserWeixinMapper.toDto(userWeixin);
}
@Override
public UserWeixinDTO findFirstByUnionIdAndAppIdAndOpenId(String unionId, String appId, String openId) {
UserWeixin userWeixin = this.UserWeixinRepository.findFirstByUnionidAndAppidAndOpenid(unionId, appId,openId).orElseGet(UserWeixin::new);
return UserWeixinMapper.toDto(userWeixin);
}
@Override
public UserWeixinDTO findFirstByAppIdAndOpenId(String appId, String openId) {
UserWeixin userWeixin = this.UserWeixinRepository.findFirstByAppidAndOpenid(appId,openId).orElseGet(UserWeixin::new);
return UserWeixinMapper.toDto(userWeixin);
}
@Override
public UserWeixinDTO findFirstByUnionId(String unionid) {
UserWeixin userWeixin = this.UserWeixinRepository.findFirstByUnionid(unionid).orElseGet(UserWeixin::new);
return UserWeixinMapper.toDto(userWeixin);
}
@Override
public UserWeixinDTO findFirstByUnionidAndAppid(String unionid, String appId) {
UserWeixin userWeixin = this.UserWeixinRepository.findFirstByUnionidAndAppid(unionid,appId).orElseGet(UserWeixin::new);
return UserWeixinMapper.toDto(userWeixin);
}
}
......
package com.topdraw.business.basicdata.user.weixin.service.mapper;
package com.topdraw.business.module.user.weixin.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.basicdata.user.weixin.domain.UserWeixin;
import com.topdraw.business.basicdata.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
......
......@@ -5,6 +5,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
@Data
@AllArgsConstructor
......@@ -13,6 +15,7 @@ public class TempIptvUser {
// 账户
@Transient
@NotNull(message = "platformAccount can't be null",groups = UnbindGroup.class)
private String platformAccount;
// 分数
......@@ -20,5 +23,72 @@ public class TempIptvUser {
private Long points;
// ID
private Long id;
// 人ID
private Long personId;
// 运营商平台
private String platform;
// 手机号
private String cellphone;
// 用户名
private String username;
// 密码 MD5
private String password;
// 昵称 Base64
private String nickname;
// 头像
private String image;
// 登录天数(总天数)
private Integer loginDays;
// 连续登录天数
private Integer continueDays;
// 活跃时间
private Timestamp activeTime;
// 分组 分组ID用逗号分隔
private String groups;
// 标签 标签用逗号分隔
private String tags;
// 登录类型 1-运营商隐式登录 2-手机验证登录 3-微信登录 4-QQ登录 5-微博登录 6-苹果登录
private Integer loginType;
// 状态 0-下线 1-上线
private Integer status;
// 描述
private String description;
// 创建者
private String createBy;
// 创建时间
private Timestamp createTime;
// 更新者
private String updateBy;
// 更新时间
private Timestamp updateTime;
// 会员id
private Long memberId;
// 会员编码
@NotNull(message = "memberCode can't be null",groups = UnbindGroup.class)
private String memberCode;
}
......
package com.topdraw.business.process.domian;
public interface UnbindGroup {
}
package com.topdraw.business.process.domian.result;
public interface TaskTemplateType {
int TYPE_1 = 1;
int TYPE_2 = 2;
int TYPE_3 = 3;
int TYPE_4 = 4;
}
package com.topdraw.business.process.domian.weixin;
import lombok.Data;
/**
* 微信账户信息
* @author XiangHan
* @date 2021-01-18
*/
@Data
public class BuyVipBean extends WeiXinUserBean {
private Integer vip;
}
package com.topdraw.business.process.domian.weixin;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
@Data
public class SubscribeBean extends WeiXinUserBean {
private JSONObject userInfoJson;
private JSONObject iptvUserInfo;
private String msgType;
private String event;
private String eventKey;
}
package com.topdraw.business.process.domian.weixin;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SubscribeBeanEvent {
@NotNull(message = "【content】 not be null !!!")
private String content;
}
package com.topdraw.business.process.domian.weixin;
import lombok.Data;
/**
* 微信账户信息
* @author XiangHan
* @date 2021-01-18
*/
@Data
public class WeiXinUserBean {
private Long id;
private String unionId;
/** */
private String openId;
/** */
private String appId;
/** 加密后的appId,参数 */
private String wxAppid;
/** 加密后的code,参数 */
private String wxCode;
/** */
private String userInfo;
/** 会员id */
private Long memberId;
/** 加密信息 */
private String encryptedData;
/** 解析用户电话号码时使用,参数 */
private String iv;
/** 资源id */
private String sourceId;
/** 资源类型 */
private String sourceType;
/** 资源描述,用来表示从哪个地方链接进来的 */
private String sourceDesc;
/** 资源实例 */
private String sourceEntity;
/** 推荐者id */
private Long sourceUser;
}
package com.topdraw.business.process.rest;
import com.topdraw.annotation.Log;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.process.domian.weixin.BuyVipBean;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.common.IResultInfo;
import com.topdraw.common.ResultInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Api("会员处理")
@RestController
@RequestMapping(value = "/ucEngine/api/memberOperation")
public class MemberOperationController {
@Autowired
private MemberOperationService memberOperationService;
@Log("获取会员加密信息并且检查vip状态")
@GetMapping("/getMemberProfileAndCheckVip/{memberId}/{appid}")
@ApiOperation("获取会员加密信息并且检查vip状态")
public IResultInfo getMemberProfileAndCheckVip(@PathVariable Long memberId, @PathVariable String appid) {
MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appid);
return ResultInfo.success(memberProfileDTO);
}
@Log("购买vip")
@PutMapping("/buyVip")
@ApiOperation("购买vip")
public ResultInfo buyVip(@RequestBody BuyVipBean buyVipBean) {
memberOperationService.buyVip(buyVipBean);
return ResultInfo.success();
}
}
package com.topdraw.business.process.rest;
import com.topdraw.annotation.Log;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.points.available.service.PointsAvailableService;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryType;
import com.topdraw.business.basicdata.points.detail.service.PointsDetailService;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailQueryCriteria;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.basicdata.user.iptv.service.UserTvService;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.basicdata.user.weixin.service.UserWeixinService;
import com.topdraw.business.basicdata.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.points.available.service.PointsAvailableService;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableQueryType;
import com.topdraw.business.module.points.detail.service.PointsDetailService;
import com.topdraw.business.module.points.detail.service.dto.PointsDetailQueryCriteria;
import com.topdraw.business.module.user.iptv.service.UserTvService;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.process.domian.TempIptvUser;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.business.process.domian.result.CustomPointsResult;
import com.topdraw.business.process.service.PointsOperationService;
import com.topdraw.business.process.service.UserTvOperationService;
import com.topdraw.common.ResultCode;
import com.topdraw.common.ResultInfo;
import com.topdraw.config.LocalConstants;
import com.topdraw.util.TimestampUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
/**
......
package com.topdraw.business.process.rest;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.basicdata.rights.history.service.RightsHistoryService;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryQueryType;
import com.topdraw.business.module.rights.history.domain.RightsHistory;
import com.topdraw.business.module.rights.history.service.RightsHistoryService;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryQueryType;
import com.topdraw.business.process.service.RightsOperationService;
import com.topdraw.common.ResultInfo;
import com.topdraw.util.TimestampUtil;
......
......@@ -43,6 +43,7 @@ public class TaskOperationController {
@Log
@PostMapping(value = "/createPoint4ChongQing")
@ApiOperation("针对重庆大屏20211220号的积分兑换活动专门定制的接口")
@Deprecated
public ResultInfo createPoint4ChongQing(@RequestBody TempIptvUser tempIptvUser){
String platformAccount = tempIptvUser.getPlatformAccount();
Long points = tempIptvUser.getPoints();
......
package com.topdraw.business.process.rest;
import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.annotation.AnonymousAccess;
import com.topdraw.annotation.Log;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.process.domian.TempIptvUser;
import com.topdraw.business.process.domian.UnbindGroup;
import com.topdraw.business.process.domian.weixin.SubscribeBean;
import com.topdraw.business.process.domian.weixin.SubscribeBeanEvent;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
import com.topdraw.business.process.service.UserOperationService;
import com.topdraw.common.ResultInfo;
import com.topdraw.module.mq.DataSyncMsg;
import com.topdraw.util.JSONUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@Api("账户处理")
@RestController
@RequestMapping(value = "/ucEngine/api/userOperation")
@Slf4j
public class UserOperationController {
@Autowired
private UserOperationService userTvOperationService;
@Log("带参二维码")
@PostMapping(value = "/sendQrCodeMessage")
@ApiOperation("带参二维码")
@AnonymousAccess
public ResultInfo sendQrCodeMessage(@RequestBody String content) {
log.info("resources :[{}]",content);
boolean result = true;
return ResultInfo.success(result);
}
@Log("删除全部收藏")
@PostMapping(value = "/deleteAllCollection")
@ApiOperation("删除全部收藏")
@AnonymousAccess
public ResultInfo deleteAllCollection(@RequestBody String content) {
log.info("resources :[{}]",content);
boolean result = true;
return ResultInfo.success(result);
}
@Log("删除收藏")
@PostMapping(value = "/deleteCollection")
@ApiOperation("删除收藏")
@AnonymousAccess
public ResultInfo deleteCollection(@RequestBody String content) {
log.info("resources :[{}]",content);
boolean result = true;
return ResultInfo.success(result);
}
@Log("添加收藏")
@PostMapping(value = "/addCollection")
@ApiOperation("添加收藏")
@AnonymousAccess
public ResultInfo addCollection(@RequestBody String content) {
log.info("resources :[{}]",content);
boolean result = true;
return ResultInfo.success(result);
}
@Log("新增大屏账户同时创建会员信息")
@PostMapping(value = "/createUserAndCreateMember")
@ApiOperation("新增大屏账户同时创建会员信息")
public ResultInfo createUserAndCreateMember(@Validated @RequestBody TempIptvUser resources) {
UserTv userTv = new UserTv();
BeanUtils.copyProperties(resources,userTv);
this.userTvOperationService.createMemberByUserTv(userTv);
return ResultInfo.success();
}
@Log("大屏用户解绑")
@PutMapping(value = "/unbind")
@ApiOperation("大屏用户解绑")
public ResultInfo unbind(@Validated(value = {UnbindGroup.class}) @RequestBody TempIptvUser resources) {
UserTv userTv = new UserTv();
BeanUtils.copyProperties(resources,userTv);
this.userTvOperationService.unbind(userTv);
return ResultInfo.success();
}
@Log("大屏更换主账号")
@PutMapping(value = "/changeMainAccount")
@ApiOperation("大屏更换主账号")
public ResultInfo changeMainAccount(@Validated(value = {UnbindGroup.class}) @RequestBody TempIptvUser resources) {
UserTv userTv = new UserTv();
BeanUtils.copyProperties(resources,userTv);
this.userTvOperationService.changeMainAccount(userTv);
return ResultInfo.success("update success");
}
@Log("微信小程序登录")
@PostMapping("/appletLogin")
@ApiOperation("微信小程序登录")
public ResultInfo appletLogin(@Validated @RequestBody WeiXinUserBean resources) {
UserWeixinDTO result = this.userTvOperationService.appletLogin(resources);
return ResultInfo.success(result);
}
@Log("微信公众号关注")
@PostMapping("/subscribe")
@ApiOperation("微信公众号关注")
@AnonymousAccess
public ResultInfo subscribe(@Validated @RequestBody SubscribeBeanEvent data) {
String content = data.getContent();
SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(content, SubscribeBean.class);
boolean result = this.userTvOperationService.subscribe(subscribeBean);
return ResultInfo.success(result);
}
@Log("微信公众号取关")
@PostMapping("/unsubscribe")
@ApiOperation("微信公众号取关")
@AnonymousAccess
public ResultInfo unsubscribe(@Validated @RequestBody SubscribeBeanEvent data) {
String content = data.getContent();
SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(content, SubscribeBean.class);
boolean result = this.userTvOperationService.unsubscribe(subscribeBean);
return ResultInfo.success(result);
}
/**
* @param data
* @description 通过大屏关注的订阅号,因为订阅号不支持带参二维码,
* 所以需要先跳到H5(带大屏参数),
* 再做服务号授权(订阅号只能按钮触发获取信息),
* 再将服务号信息和大屏参数缓存下来(该接口的功能)
* 然后跳转到订阅号关注页
* 关注后回调处理时,根据unionid进行相关逻辑
* @author Hongyan Wang
* @date 2021/8/24 4:54 下午
*/
@PostMapping(value = "/saveUserInfo")
@ApiOperation("保存大屏侧信息")
public ResultInfo saveUserInfo(@RequestBody String data) {
String s = this.userTvOperationService.saveUserInfo(data);
return ResultInfo.success(s);
}
@Log("保存用户手机号信息")
@PostMapping(value = "/saveUserWeixinPhone")
@ApiOperation("保存用户手机号信息")
public ResultInfo saveUserWeixinPhone(@RequestBody WeiXinUserBean resources) {
log.info("resources :[{}]",resources);
MemberProfile s = this.userTvOperationService.saveUserWeixinPhone(resources);
return ResultInfo.success(s);
}
}
package com.topdraw.business.process.service;
import com.topdraw.business.basicdata.coupon.domain.Coupon;
import com.topdraw.business.process.domian.TempCoupon;
import com.topdraw.business.process.domian.TempRights;
import java.util.List;
......
package com.topdraw.business.process.service;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.process.domian.weixin.BuyVipBean;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
public interface MemberOperationService {
......@@ -16,4 +20,9 @@ public interface MemberOperationService {
void doUpdateMemberPoints(Member member);
void doUpdateMemberCoupon(Member member);
MemberProfileDTO getMemberProfileAndCheckVip(Long memberId, String appid);
MemberDTO buyVip(BuyVipBean buyVipBean);
}
......
package com.topdraw.business.process.service;
import com.topdraw.business.basicdata.points.domain.Points;
import com.topdraw.business.basicdata.task.domain.Task;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.business.process.domian.result.CustomPointsResult;
import java.util.List;
import java.util.Map;
/**
* @description 积分操作接口
......
package com.topdraw.business.process.service;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.module.rights.history.domain.RightsHistory;
import com.topdraw.business.process.domian.RightType;
import java.util.List;
......
package com.topdraw.business.process.service;
public interface TaskDealService {
}
package com.topdraw.business.process.service;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.process.domian.weixin.BuyVipBean;
import com.topdraw.business.process.domian.weixin.SubscribeBean;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
public interface UserOperationService {
boolean createMemberByUserTv(UserTv resources);
void unbind(UserTv userTv);
void changeMainAccount(UserTv userTv);
UserWeixinDTO appletLogin(WeiXinUserBean resources);
boolean subscribe(SubscribeBean resources);
boolean unsubscribe(SubscribeBean resources);
String saveUserInfo(String data);
MemberProfile saveUserWeixinPhone(WeiXinUserBean resources);
}
package com.topdraw.business.process.service;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
public interface UserTvOperationService {
boolean createMemberByUserTv(UserTv resources);
}
package com.topdraw.business.process.service.builder;
import com.topdraw.business.process.domian.TempCoupon;
public class TempCouponBuilder {
public TempCoupon build(){
TempCoupon tempCoupon = new TempCoupon();
return tempCoupon;
}
}
package com.topdraw.business.process.service.impl;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.task.domain.Task;
import com.topdraw.util.TimestampUtil;
import org.springframework.util.CollectionUtils;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.task.domain.Task;
import java.util.List;
import java.util.stream.Collectors;
@FunctionalInterface
public interface CompareTaskCondition {
......
package com.topdraw.business.process.service.impl;
import com.topdraw.business.basicdata.coupon.history.domain.CouponHistory;
import com.topdraw.business.basicdata.coupon.history.service.CouponHistoryService;
import com.topdraw.business.basicdata.coupon.service.CouponService;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.module.coupon.history.domain.CouponHistory;
import com.topdraw.business.module.coupon.history.service.CouponHistoryService;
import com.topdraw.business.module.coupon.service.CouponService;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.process.service.CouponOperationService;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.domian.TempCoupon;
......@@ -19,15 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
@Service
......
package com.topdraw.business.process.service.impl;
import com.topdraw.business.basicdata.exp.detail.domain.ExpDetail;
import com.topdraw.business.basicdata.exp.detail.service.ExpDetailService;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.level.service.MemberLevelService;
import com.topdraw.business.basicdata.member.level.service.dto.MemberLevelDTO;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.exp.detail.domain.ExpDetail;
import com.topdraw.business.module.exp.detail.service.ExpDetailService;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.level.service.MemberLevelService;
import com.topdraw.business.module.member.level.service.dto.MemberLevelDTO;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.process.service.ExpOperationService;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.domian.TempExp;
......@@ -23,7 +23,6 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
......
package com.topdraw.business.process.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import cn.hutool.core.util.ObjectUtil;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileQueryCriteria;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.process.domian.weixin.BuyVipBean;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
import com.topdraw.business.process.service.MemberOperationService;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import com.topdraw.exception.EntityNotFoundException;
import com.topdraw.util.LocalDateTimeUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.StringUtils;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Base64;
import java.util.Objects;
import java.util.Optional;
import static org.bouncycastle.asn1.x500.style.RFC4519Style.member;
@Service
public class MemberOperationServiceImpl implements MemberOperationService {
@Autowired
MemberService memberService;
private MemberService memberService;
@Autowired
private MemberProfileService memberProfileService;
@Autowired
private MemberVipHistoryService memberVipHistoryService;
@Autowired
private UserWeixinService userWeixinService;
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Override
public MemberDTO buyVip(BuyVipBean criteria) {
// 查询微信账户
UserWeixinDTO userWeixin = this.findWeiXinById(criteria.getId());
Long memberId = userWeixin.getMemberId();
MemberDTO memberDTO = this.findById(memberId);
Integer vip = memberDTO.getVip();
MemberVipHistory memberVipHistory = new MemberVipHistory();
memberVipHistory.setMemberId(memberId).setVip(criteria.getVip()).setBeforeVip(vip);
if (ObjectUtil.equal(criteria.getVip(),vip)) {
memberVipHistory.setStatus(1);
}
LocalDateTime vipExpireTime = memberDTO.getVipExpireTime();
LocalDateTime now = LocalDateTime.now();
//判断之前有没有买过,没买过,失效时间为一年后;
if (ObjectUtil.isNull(vipExpireTime)) {
LocalDateTime localDateTime = now.plusYears(1L);
memberDTO.setVipExpireTime(localDateTime);
} else {
//购买过 判断当前时间有没有过vip过期时间,没有过,失效时间加一年; 过了,当前时间加一年
//区分是当前vip续费 还是买新的vip
if (ObjectUtil.equal(criteria.getVip(), memberDTO.getVip())) {
if (now.isBefore(vipExpireTime)) {
LocalDateTime localDateTime = vipExpireTime.plusYears(1L);
memberDTO.setVipExpireTime(localDateTime);
} else {
LocalDateTime localDateTime = now.plusYears(1L);
memberDTO.setVipExpireTime(localDateTime);
}
} else {
LocalDateTime localDateTime = now.plusYears(1L);
memberDTO.setVipExpireTime(localDateTime);
}
}
memberDTO.setVip(criteria.getVip());
Member member = new Member();
BeanUtils.copyProperties(memberDTO,member);
Long memberId0 = this.memberService.create(member);
memberVipHistory.setVipExpireTime(member.getVipExpireTime());
memberVipHistoryService.create(memberVipHistory);
memberService.update(member);
return memberDTO;
}
private UserWeixinDTO findWeiXinById(Long id) {
UserWeixinDTO userWeixinDTO = this.userWeixinService.findById(id);
if (Objects.isNull(userWeixinDTO)) {
throw new EntityNotFoundException(UserWeixin.class, "id", userWeixinDTO.getId().toString());
}
return userWeixinDTO;
}
@Override
public void doUpdateMemberInfo(Member member) {
......@@ -50,4 +145,139 @@ public class MemberOperationServiceImpl implements MemberOperationService {
public void doUpdateMemberCoupon(Member member) {
this.doUpdateMemberInfo(member);
}
@Override
public MemberProfileDTO getMemberProfileAndCheckVip(Long memberId, String appid) {
// 会员加密信息
MemberProfileDTO memberProfileDTO_0 = this.findMemberProfileByMemberId(memberId);
// 会员信息
MemberDTO memberDTO = this.findById(memberId);
// 初始化会员加密信息
MemberProfileDTO memberProfileDTO_1 = this.configMemberProfile(memberProfileDTO_0,memberDTO,appid);
return memberProfileDTO_1;
}
/**
* 配置会员信息
* @param memberProfileDTO_0
* @param memberDTO
* @return
*/
private MemberProfileDTO configMemberProfile(MemberProfileDTO memberProfileDTO_0, MemberDTO memberDTO, String appid) {
MemberProfileDTO memberProfileDTO = new MemberProfileDTO();
BeanUtils.copyProperties(memberProfileDTO_0,memberProfileDTO);
// 真实姓名
String realname = memberProfileDTO.getRealname();
if (StringUtils.isNotBlank(realname)) {
realname = new String(Base64.getDecoder().decode(realname.getBytes(StandardCharsets.UTF_8)));
}
// 昵称
String nickname = memberDTO.getNickname();
if (StringUtils.isNotBlank(nickname)) {
nickname = new String(Base64.getDecoder().decode(nickname.getBytes(StandardCharsets.UTF_8)));
}
// vip
Integer vip = memberDTO.getVip();
// 过期时间
LocalDateTime vipExpireTime = memberDTO.getVipExpireTime();
Long timeLong = 0L;
if (ObjectUtil.isNotNull(vipExpireTime)) {
// 检查vip
MemberDTO memberDTO1 = this.checkVipStatus(memberDTO,vipExpireTime,appid);
// 更新会员信息
this.threadPoolTaskExecutor.execute(()->{
Member member = new Member();
BeanUtils.copyProperties(memberDTO1,member);
this.memberService.update(member);
});
vip = memberDTO1.getVip();
LocalDateTime vipExpireTime1 = memberDTO1.getVipExpireTime();
if (Objects.nonNull(vipExpireTime1)) {
timeLong = vipExpireTime1.toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
}
// 过期时间
memberProfileDTO.setVipExpireTime(timeLong);
// 真实姓名
memberProfileDTO.setRealname(realname);
// 头像
memberProfileDTO.setAvatarUrl(memberDTO.getAvatarUrl());
// 生日
memberProfileDTO.setBirthdayStr(memberDTO.getBirthday());
// 性别
memberProfileDTO.setGender(memberDTO.getGender());
// 昵称
memberProfileDTO.setNickname(nickname);
// 会员id
memberProfileDTO.setMemberId(memberDTO.getId());
// vip
memberProfileDTO.setVip(vip);
return memberProfileDTO;
}
/**
* 检查vip是否过期
* 1.当前vip如果过期则查看是否有vip历史变动
* 2.如果vip变动历史有记录则获取vip变动记录
* 3.如果vip没有记录则查看是否关注了公众号
* @param vipExpireTime
* @return
*/
private MemberDTO checkVipStatus(MemberDTO memberDTO,LocalDateTime vipExpireTime, String appid) {
Long memberId = memberDTO.getId();
LocalDateTime nowTime = LocalDateTime.now();
//vip过期,回退上个vip状态 同时修改member表vip
if (nowTime.compareTo(vipExpireTime) >= 0 ) {
Integer vip = 0;
LocalDateTime vipExpireTime1 = memberDTO.getVipExpireTime();
//查询小于失效时间的那条记录 查不到 取微信表里 关注状态
MemberVipHistory memberVipHistory = this.memberVipHistoryService.findByTime(memberId, nowTime);
if (ObjectUtil.isNull(memberVipHistory.getId())) {
UserWeixinDTO userWeixin = this.userWeixinService.findFirstByMemberIdAndAppid(memberId, appid);
// 微信公众号关注的状态 0:未关注 1:关注
Integer status = userWeixin.getStatus();
if (status != 1) vip = 0; else vip = 1;
vipExpireTime1 = null;
} else {
vip = memberVipHistory.getVip();
vipExpireTime1 = memberVipHistory.getVipExpireTime();
}
memberDTO.setVipExpireTime(vipExpireTime1);
memberDTO.setVip(vip);
}
return memberDTO;
}
/**
* 查询会员加密信息
* @param memberId
* @return
*/
private MemberProfileDTO findMemberProfileByMemberId(Long memberId) {
return this.memberProfileService.findByMemberId(memberId);
}
}
......
......@@ -2,18 +2,16 @@ package com.topdraw.business.process.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.points.available.domain.PointsAvailable;
import com.topdraw.business.basicdata.points.available.service.PointsAvailableService;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.basicdata.points.detail.detailhistory.service.PointsDetailHistoryService;
import com.topdraw.business.basicdata.points.detail.domain.PointsDetail;
import com.topdraw.business.basicdata.points.detail.service.PointsDetailService;
import com.topdraw.business.basicdata.points.service.PointsService;
import com.topdraw.business.basicdata.user.iptv.service.UserTvService;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.points.available.domain.PointsAvailable;
import com.topdraw.business.module.points.available.service.PointsAvailableService;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.module.points.detail.detailhistory.service.PointsDetailHistoryService;
import com.topdraw.business.module.points.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.service.PointsDetailService;
import com.topdraw.business.module.points.service.PointsService;
import com.topdraw.business.process.domian.result.CustomPointsResult;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.service.PointsOperationService;
......@@ -22,7 +20,6 @@ import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.StringUtils;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
......@@ -30,20 +27,15 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
......
package com.topdraw.business.process.service.impl;
import com.topdraw.business.basicdata.coupon.service.CouponService;
import com.topdraw.business.basicdata.coupon.service.dto.CouponDTO;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.basicdata.rights.history.service.RightsHistoryService;
import com.topdraw.business.basicdata.rights.service.RightsService;
import com.topdraw.business.basicdata.rights.service.dto.RightsDTO;
import com.topdraw.business.module.coupon.service.CouponService;
import com.topdraw.business.module.coupon.service.dto.CouponDTO;
import com.topdraw.business.module.rights.history.domain.RightsHistory;
import com.topdraw.business.module.rights.history.service.RightsHistoryService;
import com.topdraw.business.module.rights.service.RightsService;
import com.topdraw.business.module.rights.service.dto.RightsDTO;
import com.topdraw.business.process.service.CouponOperationService;
import com.topdraw.business.process.service.ExpOperationService;
import com.topdraw.business.process.service.PointsOperationService;
......@@ -16,7 +16,6 @@ import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
......
package com.topdraw.business.process.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.business.basicdata.coupon.service.CouponService;
import com.topdraw.business.basicdata.coupon.service.dto.CouponDTO;
import com.topdraw.business.basicdata.member.group.service.MemberGroupService;
import com.topdraw.business.basicdata.member.group.service.dto.MemberGroupDTO;
import com.topdraw.business.basicdata.member.group.service.dto.MemberGroupQueryCriteria;
import com.topdraw.business.basicdata.rights.permanentrights.service.PermanentRightsService;
import com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsDTO;
import com.topdraw.business.basicdata.rights.service.RightsService;
import com.topdraw.business.basicdata.rights.service.dto.RightsDTO;
import com.topdraw.business.basicdata.task.progress.domain.TrTaskProgress;
import com.topdraw.business.basicdata.task.progress.service.TrTaskProgressService;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressDTO;
import com.topdraw.business.basicdata.task.progress.service.dto.TrTaskProgressQueryCriteria;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.basicdata.user.iptv.service.UserTvService;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.coupon.service.CouponService;
import com.topdraw.business.module.coupon.service.dto.CouponDTO;
import com.topdraw.business.module.member.group.service.MemberGroupService;
import com.topdraw.business.module.member.group.service.dto.MemberGroupDTO;
import com.topdraw.business.module.member.group.service.dto.MemberGroupQueryCriteria;
import com.topdraw.business.module.rights.permanentrights.service.PermanentRightsService;
import com.topdraw.business.module.rights.permanentrights.service.dto.PermanentRightsDTO;
import com.topdraw.business.module.rights.service.RightsService;
import com.topdraw.business.module.rights.service.dto.RightsDTO;
import com.topdraw.business.module.task.attribute.service.TaskAttrService;
import com.topdraw.business.module.task.attribute.service.dto.TaskAttrDTO;
import com.topdraw.business.module.task.progress.domain.TrTaskProgress;
import com.topdraw.business.module.task.progress.service.TrTaskProgressService;
import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressDTO;
import com.topdraw.business.module.task.progress.service.dto.TrTaskProgressQueryCriteria;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.service.UserTvService;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.process.domian.result.TaskTemplateType;
import com.topdraw.business.process.service.PointsOperationService;
import com.topdraw.business.process.service.RightsOperationService;
import com.topdraw.business.process.service.TaskOperationService;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.task.domain.Task;
import com.topdraw.business.basicdata.task.service.TaskService;
import com.topdraw.business.basicdata.task.template.domain.TaskTemplate;
import com.topdraw.business.basicdata.task.template.service.TaskTemplateService;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.task.domain.Task;
import com.topdraw.business.module.task.service.TaskService;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.service.TaskTemplateService;
import com.topdraw.business.process.domian.*;
import com.topdraw.business.process.service.UserTvOperationService;
import com.topdraw.business.process.service.UserOperationService;
import com.topdraw.common.ResultInfo;
import com.topdraw.module.mq.DataSyncMsg;
import com.topdraw.util.*;
......@@ -76,6 +79,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
CouponService couponService;
@Autowired
MemberGroupService memberGroupService;
@Autowired
TaskAttrService taskAttrService;
private static final Integer TASK_FINISH_STATUS = 1;
......@@ -91,8 +96,6 @@ public class TaskOperationServiceImpl implements TaskOperationService {
Integer event = msgData.getEvent();
Long memberId = msgData.getMemberId();
long l = System.currentTimeMillis();
// 检查当前会员的黑名单状态
boolean b = this.validatedMemberBlackStatus(memberId);
if (!b) {
......@@ -100,9 +103,9 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
// 1.通过任务标识获取任务模板,通过模板参数获取具体的模板
TaskTemplate taskTemplate = this.getTaskTemplate(event);
TaskTemplate taskTemplate = this.getTaskTemplate(event,dataSyncMsg);
// 2.通过任务模板获取对应的任务列表
List<Task> taskList = this.loadListTaskByTaskTemplate(taskTemplate);
List<Task> taskList = this.loadListTaskByTaskTemplate(taskTemplate,dataSyncMsg);
// 4.判断当前用户是否满足任务完成条件
boolean checkResult = this.checkTaskCompletion(memberId,taskList);
if (checkResult) {
......@@ -114,11 +117,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
long r = System.currentTimeMillis();
log.info("总耗时======>>>>>" + (r-l));
return ResultInfo.success();
}
/**
......@@ -763,17 +763,77 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* @param taskTemplate 任务模板
* @return List<task> 任务列表
*/
private List<Task> loadListTaskByTaskTemplate(TaskTemplate taskTemplate,Map<String,Object> paramMap) {
private List<Task> loadListTaskByTaskTemplate(TaskTemplate taskTemplate,DataSyncMsg dataSyncMsg) {
if (Objects.nonNull(taskTemplate)) {
Long taskTemplateId = taskTemplate.getId();
return this.taskService.findByTemplateId(taskTemplateId);
List<Task> taskList = this.taskService.findByTemplateId(taskTemplateId);
Integer type = taskTemplate.getType();
switch (type) {
// 订购
case TaskTemplateType.TYPE_4:
taskList = this.pickUpTask(taskList,dataSyncMsg);
break;
default:
break;
}
return taskList;
}
return null;
}
/**
* 通过参数确定具体任务
* @param taskList
* @param dataSyncMsg
* @return
*/
private List<Task> pickUpTask(List<Task> taskList,DataSyncMsg dataSyncMsg) {
List<Task> taskList1 = new ArrayList<>();
DataSyncMsg.TaskTemplateParam param = dataSyncMsg.getParam();
if (Objects.nonNull(param)) {
String code = param.getCode();
for (Task task : taskList) {
Long taskId = task.getId();
TaskAttrDTO taskAttrDTO = this.findTaskAttrByTaskId(taskId);
String attrStr = taskAttrDTO.getAttrStr();
if (StringUtils.hasText(attrStr)) {
DataSyncMsg.TaskTemplateParam taskTemplateParam = JSONObject.parseObject(attrStr, DataSyncMsg.TaskTemplateParam.class);
if (Objects.nonNull(taskTemplateParam)) {
String code1 = taskTemplateParam.getCode();
if (StringUtils.hasText(code1) && code.equalsIgnoreCase(code1)) {
taskList1.add(task);
}
}
}
}
} else {
return taskList;
}
return taskList1;
}
private TaskAttrDTO findTaskAttrByTaskId(Long taskId) {
return this.taskAttrService.findByTaskId(taskId);
}
/**
* 获取任务模板对应的任务列表
*
* @param taskTemplate 任务模板
......@@ -794,12 +854,54 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* @param event 任务
* @return TaskTemplate 任务模板
*/
private TaskTemplate getTaskTemplate(Integer event) {
return this.taskTemplateService.findByType(event);
private TaskTemplate getTaskTemplate(Integer event,DataSyncMsg msgData) {
DataSyncMsg.TaskTemplateParam taskTemplateParam = msgData.getParam();
if (Objects.nonNull(taskTemplateParam)) {
return this.findByTypeAndParam(event,taskTemplateParam);
} else {
List<TaskTemplate> taskTemplateList = this.taskTemplateService.findByType(event);
if (!CollectionUtils.isEmpty(taskTemplateList)) {
return taskTemplateList.get(0);
} else {
return null;
}
}
}
private TaskTemplate findByTypeAndParam(Integer event, DataSyncMsg.TaskTemplateParam taskTemplateParam) {
String category = taskTemplateParam.getCategory();
List<TaskTemplate> taskTemplateList = this.taskTemplateService.findByType(event);
if (!CollectionUtils.isEmpty(taskTemplateList)) {
for (TaskTemplate taskTemplate : taskTemplateList) {
String params = taskTemplate.getParams();
if(!StringUtils.isEmpty(params)) {
DataSyncMsg.TaskTemplateParam taskTemplateParam1 = JSONObject.parseObject(params,DataSyncMsg.TaskTemplateParam.class);
String category1 = taskTemplateParam1.getCategory();
if (!StringUtils.isEmpty(category1) && category1.equalsIgnoreCase(category))
return taskTemplate;
}
}
}
return null;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
......@@ -811,7 +913,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
@Autowired
private PointsOperationService pointsOperationService;
@Autowired
private UserTvOperationService userTvOperationService;
private UserOperationService userTvOperationService;
private UserTv checkUserTv(String platformAccount){
UserTv userTv = new UserTv();
......@@ -825,6 +927,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
@Override
@Deprecated
public boolean createPoint2ChongQing(String platformAccount, Long points) {
boolean result = this.verificationActivity(platformAccount);
......@@ -847,7 +950,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
tempPoints.setMemberId(memberId);
tempPoints.setMemberCode(code);
tempPoints.setPoints(points);
tempPoints.setDescription("重庆重数大屏积分兑换活动,时间:202112");
// tempPoints.setDescription("重庆重数大屏积分兑换活动,时间:202112");
tempPoints.setDeviceType(1);
tempPoints.setEvtType(3);
tempPoints.setPointsType(0);
......
package com.topdraw.business.process.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.druid.util.HttpClientUtils;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.domain.MemberBuilder;
import com.topdraw.business.module.member.domain.MemberConstant;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.service.dto.MemberQueryCriteria;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.user.iptv.domain.UserConstant;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.iptv.service.UserTvService;
import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinQueryCriteria;
import com.topdraw.business.process.domian.weixin.BuyVipBean;
import com.topdraw.business.process.domian.weixin.SubscribeBean;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
import com.topdraw.business.process.service.UserOperationService;
import com.topdraw.config.LocalConstants;
import com.topdraw.config.RedisKeyUtil;
import com.topdraw.exception.BadRequestException;
import com.topdraw.exception.EntityNotFoundException;
import com.topdraw.security.AESUtil;
import com.topdraw.util.IdWorker;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.StringUtils;
import com.topdraw.weixin.beans.DefaultWeiXinBeanDefinition;
import com.topdraw.weixin.beans.WeiXinBeanDefinition;
import com.topdraw.weixin.beans.config.WeiXinAppListConfig;
import com.topdraw.weixin.util.WeChatConstants;
import com.topdraw.weixin.util.WeiXinRequestUtil;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
@Service
@Slf4j
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class UserOperationServiceImpl implements UserOperationService {
@Autowired
private RedissonClient redissonClient;
@Autowired
private MemberService memberService;
@Autowired
private UserTvService userTvService;
@Autowired
private UserWeixinService userWeixinService;
@Autowired
private RedisUtils redisUtils;
@Autowired
private WeiXinRequestUtil weixinRequestUtil;
@Autowired
private WeiXinAppListConfig weiXinAppListConfig;
@Autowired
private MemberProfileService memberProfileService;
/** 取消关注 */
private static final Integer UNSUBSCRIBE_STATUS = 0;
private static final Integer SUBSCRIBE_STATUS = 1;
private static final String SUBSCRIBE = "subscribe";
private static final String UNSUBSCRIBE = "unsubscribe";
private static final Integer[] PLATFORM_LIST = new Integer[]{0,1,2,3};
@Value("${uc.service.platform:}")
private String platform;
@Value("${key:}")
private String key;
@Value("${uc.app.subAppId:wx05f35931270014be}")
private String subAppId;
@Value("${uc.app.h5AppId:wxca962918dfeed88c}")
private String h5AppId;
@Value("${uc.app.appletAppid:wxc57d42de3d351cec}")
private String appletAppid;
@Value("${file.upload:upload}")
private String filePath;
/**
* 微信公众号关注
* @description 大小屏绑定,大屏账户保存小屏会员编码
* @param resources
* @return
*/
@Override
public boolean subscribe(SubscribeBean resources) {
String unionId = resources.getUnionId();
String appId = resources.getAppId();
String openId = resources.getOpenId();
DefaultWeiXinBeanDefinition weiXinBeanDefinition = this.parseAppletInfo(resources);
if (Objects.nonNull(weiXinBeanDefinition.getOpenId())) {
throw new RuntimeException("微信信息解析失败!");
}
UserWeixinDTO userWeixinDTO = this.findUserWeiXinByOpenIdAndAppId(appId, openId);
if (Objects.isNull(userWeixinDTO.getId())) {
// 创建会员和账户
this.doCreateUserWeiXinAndMember(weiXinBeanDefinition,userWeixinDTO);
} else {
// 修改会员和会员信息
this.doUpdateUserWeiXinAndMember(userWeixinDTO,appId,openId);
}
// 小屏会员
MemberDTO memberDTO_0 = this.findMemberByAppIdAndOpenId(appId,openId);
// 从redis中获取大屏信息
UserTvDTO userTvDTO = this.findUserTvFromRedis(unionId);
// 携带了大屏信息
if (Objects.nonNull(userTvDTO) && StringUtils.isNotEmpty(memberDTO_0.getCode())) {
// 绑定主账号会员
this.bondPriorityMember(userTvDTO,memberDTO_0);
// 小屏会员绑定大屏账户id
MemberDTO memberDTO_1 = this.bindIptvId(memberDTO_0,userTvDTO);
// 修改会员
this.doUpdateMemberByMemberDTO(memberDTO_1);
}
return true;
}
/**
*
* @param userWeixinDTO
* @param appId
* @param openId
*/
private void doUpdateUserWeiXinAndMember(UserWeixinDTO userWeixinDTO,String appId,String openId) {
// 修改微信账户关注状态
this.doUpdateUserWeiXinStatus(userWeixinDTO,SUBSCRIBE_STATUS);
// 小屏会员
MemberDTO memberDTO_0 = this.findMemberByAppIdAndOpenId(appId,openId);
this.doUpdateMemberVip(memberDTO_0,1);
}
/**
* 创建会员和账户
* @param weiXinBeanDefinition
* @param userWeixinDTO
*/
private void doCreateUserWeiXinAndMember(DefaultWeiXinBeanDefinition weiXinBeanDefinition,UserWeixinDTO userWeixinDTO) {
// 创建小屏
UserWeixin userWeixin = this.generateUserWeiXin(weiXinBeanDefinition,SUBSCRIBE_STATUS);
if (Objects.isNull(userWeixin.getId())) {
throw new BadRequestException("创建小屏账户失败");
}
// 保存会员
Long memberId = this.doCreateMember(userWeixin,1);
if (Objects.isNull(memberId)) {
throw new BadRequestException("会员创建保存失败");
}
// 保存或者修改,微信账户信息
this.doCreateUserWeiXin(userWeixin,memberId);
}
/**
* 获取小屏会员
* @param appId
* @param openId
* @return
*/
private MemberDTO findMemberByAppIdAndOpenId(String appId, String openId) {
UserWeixinDTO userWeixinDTO = this.findUserWeiXinByOpenIdAndAppId(appId, openId);
if (Objects.nonNull(userWeixinDTO)) {
Long memberId = userWeixinDTO.getMemberId();
return this.findMemberById(memberId);
}
return null;
}
/**
* 从redis中获取大屏信息
* @param unionId
* @return
*/
private UserTvDTO findUserTvFromRedis(String unionId) {
// 解析大屏信息
JSONObject iptvUserInfo = this.parseUserTvContent(unionId);
if (Objects.nonNull(iptvUserInfo)) {
String platformAccount = iptvUserInfo.getString("platformAccount");
UserTvDTO userTvDTO = this.findByPlatformAccount(platformAccount);
if (Objects.nonNull(userTvDTO.getId()))
userTvDTO.setPlatformAccount(platformAccount);
return userTvDTO;
}
return null;
}
/**
* 解析大屏用户
* @param unionId
* @return
*/
private JSONObject parseUserTvContent(String unionId) {
// 缓存的信息,使用unionid即可
String content = (String) this.redisUtils.get(RedisKeyUtil.genSeSuSubscribeKey(unionId));
// 之后删除缓存信息
redisUtils.del(RedisKeyUtil.genSeSuSubscribeKey(unionId));
JSONObject iptvUserInfo = com.alibaba.fastjson.JSONObject.parseObject(content);
return iptvUserInfo;
}
/**
* 绑定iptvId字段并修改会员vip字段
* @param memberDTO
* @param userTvDTO
*/
private MemberDTO bindIptvIdAndUpdateVip(MemberDTO memberDTO, UserTvDTO userTvDTO) {
Integer vip = memberDTO.getVip();
if (Objects.nonNull(vip) && vip == 0) {
memberDTO.setVip(1);
return this.bindIptvId(memberDTO,userTvDTO);
}
return memberDTO;
}
/**
* 微信公众号取消关注
* @param resources
* @return
*/
@Override
public boolean unsubscribe(SubscribeBean resources) {
String appId = resources.getAppId();
String openId = resources.getOpenId();
// 修改关注状态 0:未关注
UserWeixinDTO userWeixinDTO = this.doUpdateUserWeiXinStatus(appId, openId, UNSUBSCRIBE_STATUS);
// 会员
MemberDTO memberDTO = this.findMemberByUserWeixinDTO(userWeixinDTO);
// 修改会员vip,如果没有购买会员则取消团粉
this.doUpdateMemberVip(memberDTO,0);
return true;
}
/**
* 更新大屏信息,同时判断是否已经关注,如果关注了则不跳转H5页面
* @param data
* @return
*/
@Override
public String saveUserInfo(String data) {
Assert.notNull(data, "用户数据不可为空");
JSONObject json = JSONObject.parseObject(data);
String unionid = json.getString("unionid");
Assert.state(StrUtil.isNotBlank(unionid), "unionid不可为空");
String result = "";
// 订阅号appid
String appId = json.getString("dyAppid");
try {
// 过期时间300S
this.redisUtils.set(RedisKeyUtil.genSeSuSubscribeKey(unionid), data, 300);
// 若未传dyAppId。不走下面的流程
if (StrUtil.isNotBlank(appId))
result = this.checkWeiXinUserAndSubscribeStatus(appId,unionid);
} catch (Exception e) {
log.error(" saveUserInfo get an error || data: {} || msg: {} ", data, e.getMessage());
}
return result;
}
/**
* 检查微信账户和关注状态
* @param appId
* @param unionid
* @return
*/
private String checkWeiXinUserAndSubscribeStatus(String appId, String unionid) {
UserWeixinDTO userWeixinDTO = this.findUserWeiXinByUnionIdAndAppId(unionid,appId);
if (Objects.isNull(userWeixinDTO.getId())) {
return UNSUBSCRIBE;
}
Integer status = userWeixinDTO.getStatus();
if (status == UNSUBSCRIBE_STATUS) {
return UNSUBSCRIBE;
}
return SUBSCRIBE;
}
private UserWeixinDTO findUserWeiXinByUnionIdAndAppId(String unionid, String appId) {
return this.userWeixinService.findFirstByUnionidAndAppid(unionid,appId);
}
/**
* 修改会员vip状态
*/
private void doUpdateMemberVip(MemberDTO memberDTO,Integer vip1) {
Integer vip = memberDTO.getVip();
// 未购买付费会员
if (vip <= 1) {
memberDTO.setVip(vip1);
Member member = new Member();
BeanUtils.copyProperties(memberDTO,member);
this.memberService.update(member);
}
}
/**
* 获取小屏会员
* @param userWeixinDTO
* @return
*/
private MemberDTO findMemberByUserWeixinDTO(UserWeixinDTO userWeixinDTO) {
Long memberId = userWeixinDTO.getMemberId();
if (Objects.nonNull(memberId)) {
MemberDTO memberDTO = this.findMemberById(memberId);
return memberDTO;
}
return null;
}
/**
* 修改微信公众号关注状态
* @param status 0:取消关注 1:关注
*/
private UserWeixinDTO doUpdateUserWeiXinStatus(String appId, String openId, Integer status) {
UserWeixinDTO userWeixinDTO = this.userWeixinService.findFirstByAppIdAndOpenId(appId, openId);
if (Objects.nonNull(userWeixinDTO.getId())) {
userWeixinDTO.setStatus(status);
UserWeixin userWeixin = new UserWeixin();
BeanUtils.copyProperties(userWeixinDTO,userWeixin);
this.userWeixinService.update(userWeixin);
}
return userWeixinDTO;
}
/**
* 修改微信公众号关注状态
* @param status 0:取消关注 1:关注
*/
private UserWeixinDTO doUpdateUserWeiXinStatus(UserWeixinDTO userWeixinDTO, Integer status) {
userWeixinDTO.setStatus(status);
UserWeixin userWeixin = new UserWeixin();
BeanUtils.copyProperties(userWeixinDTO,userWeixin);
this.userWeixinService.update(userWeixin);
return userWeixinDTO;
}
/**
* 通过openId和appId获取微信信息
* @param appId
* @param openId
* @return
*/
private UserWeixinDTO findUserWeiXinByOpenIdAndAppId(String appId, String openId) {
UserWeixinDTO userWeixinDTO = this.userWeixinService.findFirstByAppIdAndOpenId(appId,openId);
return userWeixinDTO;
}
/**
* 获取会员
* @param memberId
* @return
*/
private MemberDTO findMemberById(Long memberId) {
MemberDTO memberDTO = this.memberService.findById(memberId);
return memberDTO;
}
/**
* 小程序登录
* @param resources
* @return
*/
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Exception.class)
public UserWeixinDTO appletLogin(WeiXinUserBean resources) {
// 解析
DefaultWeiXinBeanDefinition weiXinBeanDefinition = this.parseAppletInfo(resources);
if (Objects.isNull(weiXinBeanDefinition.getAppId())) {
throw new RuntimeException("微信信息解析失败!");
}
// 链接微信服务器获取用户信息,创建UserWeixin
UserWeixin userWeixin = this.generateUserWeiXin(weiXinBeanDefinition,UNSUBSCRIBE_STATUS);
// 保存会员
Long memberId = this.doCreateMember(userWeixin,0);
// 保存或者修改,微信账户信息
UserWeixinDTO userWeixinDTO = this.doCreateUserWeiXin(userWeixin, memberId);
return userWeixinDTO;
}
/**
* 创建会员
* @description 同一用户只有一个会员,通过unionId查询任意账户是否关联了会员,如果关联了就不用再创建
* @param userWeixin
* @param vip
* @return
*/
private Long doCreateMember(UserWeixin userWeixin,Integer vip) {
Long memberId = null;
if(Objects.nonNull(userWeixin)) {
String unionid = userWeixin.getUnionid();
// 新创建的小屏账户
if(Objects.nonNull(unionid)) {
// 查询第一个账户是否关联了会员
UserWeixinDTO userWeixinDTO = this.userWeixinService.findFirstByUnionId(unionid);
// 无账号,没有绑定会员
if (Objects.isNull(userWeixinDTO.getId()) || Objects.isNull(userWeixinDTO.getMemberId())) {
// 默认会员
Member member = MemberBuilder.build(LocalConstants.DEVICE_MOBILE,userWeixin.getHeadimgurl(),
userWeixin.getNickname(),vip);
memberId = this.memberService.create(member);
}
// 如果绑定了会员
if (Objects.nonNull(userWeixinDTO.getMemberId())) {
memberId = userWeixinDTO.getMemberId();
}
}
}
return memberId;
}
/**
* 保存微信账户信息
* @param userWeixin
* @param memberId
*/
private UserWeixinDTO doCreateUserWeiXin(UserWeixin userWeixin,Long memberId) {
UserWeixinDTO userWeixinDTO = new UserWeixinDTO();
if(Objects.isNull(userWeixin.getId()) && Objects.nonNull(memberId)) {
userWeixin.setMemberId(memberId);
userWeixin.setStatus(1);
userWeixin.setSyncStatus(0);
userWeixin.setCreateBy("system");
userWeixin.setUpdateBy("system");
userWeixin.setAuthTime(TimestampUtil.now());
userWeixin = this.userWeixinService.create(userWeixin);
}
BeanUtils.copyProperties(userWeixin,userWeixinDTO);
return userWeixinDTO;
}
/**
* 链接微信服务器,创建或者修改UserWeiXinDTO
* @param weiXinBeanDefinition
* @return
*/
private UserWeixin generateUserWeiXin(WeiXinBeanDefinition weiXinBeanDefinition,Integer status) {
String appId = weiXinBeanDefinition.getAppId();
String openId = weiXinBeanDefinition.getOpenId();
String unionId = weiXinBeanDefinition.getUnionId();
String nickname = weiXinBeanDefinition.getNickname();
String headImgUrl = weiXinBeanDefinition.getHeadImgUrl();
// 微信
UserWeixinDTO weixinDTO = this.userWeixinService.findFirstByAppIdAndOpenId(appId,openId);
if (Objects.isNull(weixinDTO.getId())) {
UserWeixin userWeixin = new UserWeixin()
.setAppid(appId)
.setOpenid(openId)
.setUnionid(unionId)
.setNickname(nickname)
.setHeadimgurl(headImgUrl)
.setStatus(status)
.setAuthTime(TimestampUtil.now());
return userWeixin;
}
UserWeixin userWeixin = new UserWeixin();
BeanUtils.copyProperties(weixinDTO,userWeixin);
return userWeixin;
}
/**
* 解析小程序
* @param resources
* @return
*/
private DefaultWeiXinBeanDefinition parseAppletInfo(WeiXinUserBean resources) {
return this.parse(resources);
}
/**
* 解析微信信息
* @param resources
* @return
*/
private DefaultWeiXinBeanDefinition parse(WeiXinUserBean resources) {
Map<String, String> weixinInfoMap = null;
String appId = resources.getWxAppid();
String code = resources.getWxCode();
String encryptedData = resources.getEncryptedData();
String iv = resources.getIv();
String userInfo = null;
if (StringUtils.isNotBlank(appId)) {
String decrypt = AESUtil.decrypt(appId, this.key);
if (decrypt != null) {
appId = decrypt.substring(16);
}
weixinInfoMap = this.getWeixinInfoByAppid(appId);
}
if (StringUtils.isNotBlank(code)) {
String decrypt = AESUtil.decrypt(code, this.key);
if (decrypt != null) {
code = decrypt.substring(16);
}
}
/*if (StringUtils.isNotBlank(resources.getEncryptedData())) {
String decrypt = AESUtil.decrypt(resources.getEncryptedData(), key);
if (decrypt != null) {
encryptedData = decrypt.substring(16);
}
}*/
/*if (StringUtils.isNotBlank(resources.getIv())) {
String decrypt = AESUtil.decrypt(iv, key);
if (decrypt != null) {
iv = decrypt.substring(16);
}
}*/
String appId_ = weixinInfoMap.get("appid");
String secret = weixinInfoMap.get("secret");
// 链接微信服务器
String url = WeChatConstants.CODE2SESSION.replace("APPID", appId_)
.replace("SECRET", secret).replace("JSCODE", code);
String entityBody = HttpUtil.get(url);
log.info("entityBody [{}]",entityBody);
JSONObject jsonObject = JSONObject.parseObject(entityBody);
String errCode = jsonObject.getString("errcode");
if (StringUtils.isNotEmpty(errCode)) {
String nameStr = jsonObject.getString("errmsg");
throw new BadRequestException(nameStr);
}
String openId = jsonObject.getString("openid");
String unionId = jsonObject.getString("unionid");
String sessionKey = jsonObject.getString("session_key");
JSONObject userInfoWxJo = null;
if (StringUtils.isNotBlank(encryptedData) && StringUtils.isNotBlank(iv) && StringUtils.isNotBlank(sessionKey)) {
String userInfoWeixin = AESUtil.decryptJsUserInfo(encryptedData, iv, sessionKey);
log.info("userInfoWeixin [{}]",userInfoWeixin);
if (StringUtils.isNotEmpty(userInfoWeixin))
userInfoWxJo = JSONObject.parseObject(userInfoWeixin);
}
if (StringUtils.isNotBlank(userInfo)) {
JSONObject userInfoJo = JSONObject.parseObject(userInfo);
if (Objects.nonNull(userInfoJo)) {
encryptedData = userInfoJo.getString("encryptedData");
iv = userInfoJo.getString("iv");
String sessionkey = jsonObject.getString("session_key");
String userInfoWeixin = AESUtil.decryptJsUserInfo(encryptedData, iv, sessionkey);
log.info("userInfo:" + userInfo);
userInfoWxJo = JSONObject.parseObject(userInfoWeixin);
}
}
DefaultWeiXinBeanDefinition weiXinBeanDefinition =
new DefaultWeiXinBeanDefinition(appId,code,unionId,openId,userInfoWxJo);
return weiXinBeanDefinition;
}
/**
*
* @param appid
* @return
*/
private Map<String, String> getWeixinInfoByAppid(String appid) {
if (StringUtils.isBlank(appid)) {
throw new RuntimeException("wxAppid can not be null");
}
List<Map<String, String>> list = this.weiXinAppListConfig.getList();
Optional<Map<String, String>> weixinInfoOptional = list.stream().filter(o -> o.get("appid").equals(appid)).findFirst();
if (!weixinInfoOptional.isPresent()) {
throw new RuntimeException("wxAppid error, appid is : " + appid);
}
return weixinInfoOptional.get();
}
/**
* 大屏更换主账号
* @param resources
*/
@Override
public void changeMainAccount(UserTv resources) {
// 会员编码
String memberCode = resources.getMemberCode();
// 大屏账户
UserTvDTO userTvDTO = this.findByUserTv(resources);
// 会员
MemberDTO memberDTO = this.findMemberByMemberCode(memberCode);
// 设置主会员
this.bondPriorityMember(userTvDTO, memberDTO);
}
/**
* 设置主会员
* @description 检查大屏账户有没有绑定小屏会员,如果没有绑定就将当前会员的code保存到大屏账户中
* @param userTvDTO
* @param memberDTO
*/
private void bondPriorityMember(UserTvDTO userTvDTO, MemberDTO memberDTO) {
// 绑定的小屏编码
String priorityMemberCode = userTvDTO.getPriorityMemberCode();
if (StringUtils.isNotEmpty(priorityMemberCode)) {
return;
}
String memberCode = memberDTO.getCode();
// 绑定了小屏,结束
if (StringUtils.isEmpty(priorityMemberCode) && StringUtils.isNotEmpty(memberCode)) {
userTvDTO.setPriorityMemberCode(memberCode);
}
UserTv userTv = new UserTv();
BeanUtils.copyProperties(userTvDTO,userTv);
this.userTvService.update(userTv);
}
/**
* 通过账户获取大屏账户
* @param platformAccount
* @return
*/
private UserTvDTO findByPlatformAccount(String platformAccount) {
return this.userTvService.findByPlatformAccount(platformAccount);
}
/**
* 通过编码获取会员
* @param memberCode
* @return
*/
private MemberDTO findMemberByMemberCode(String memberCode) {
return this.memberService.getByCode(memberCode);
}
/**
* 大屏解绑
* @param resources
*/
@Override
public void unbind(UserTv resources) {
// 大屏账户
UserTvDTO userTvDTO = this.findByUserTv(resources);
Long id = userTvDTO.getId();
String memberCode = resources.getMemberCode();
// 大屏会员
List<MemberDTO> memberDTOS = this.findMemberByCodeAndUserIptvId(id,memberCode);
// 解绑(置空大屏信息)
this.resetIptvColumn(memberDTOS);
// 置空主账号
this.resetMainAccount(memberCode);
}
/**
* 置空主账号
* @param memberCode
*/
private void resetMainAccount(String memberCode) {
UserTvDTO userTvDTO = this.userTvService.findByPriorityMemberCode(memberCode);
if (Objects.nonNull(userTvDTO)) {
userTvDTO.setPriorityMemberCode(null);
UserTv userTv = new UserTv();
BeanUtils.copyProperties(userTvDTO,userTv);
this.userTvService.update(userTv);
}
}
/**
* 解绑(置空大屏信息)
* @param memberDTOS
*/
private void resetIptvColumn(List<MemberDTO> memberDTOS) {
// 若无关系,不做处理
if (CollUtil.isEmpty(memberDTOS))
return;
Member member = new Member();
memberDTOS.get(0).setBindIptvTime(null);
memberDTOS.get(0).setUserIptvId(null);
memberDTOS.get(0).setBindIptvPlatformType(null);
BeanUtils.copyProperties(memberDTOS.get(0), member);
this.memberService.update(member);
}
/**
*
* @param tvUserId 大屏ic
* @param memberCode 会员编码
* @return
*/
private List<MemberDTO> findMemberByCodeAndUserIptvId(Long tvUserId,String memberCode) {
MemberQueryCriteria memberQueryCriteria = new MemberQueryCriteria();
memberQueryCriteria.setCode(memberCode);
memberQueryCriteria.setUserIptvId(tvUserId);
List<MemberDTO> memberDTOS = memberService.queryAll(memberQueryCriteria);
return memberDTOS;
}
/**
* 通过大屏账户id查询大屏信息
* @param userTvId
* @return
*/
private UserTvDTO findByUserTvId(Long userTvId) {
UserTvDTO userTvDTO = this.userTvService.findById(userTvId);
return userTvDTO;
}
/**
* 通过大屏账户查询大屏信息
* @param resources
* @return
*/
private UserTvDTO findByUserTv(UserTv resources) {
String platformAccount = resources.getPlatformAccount();
UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
return userTvDTO;
}
/**
* 创建大屏会员
* @param resources
* @return
*/
@Override
@Transactional
public boolean createMemberByUserTv(UserTv resources) {
String platformAccount = resources.getPlatformAccount();
UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
if (Objects.isNull(userTvDTO)) {
Member member = new Member();
// 大屏
member.setType(LocalConstants.MEMBER_PLATFORM_TYPE_VIS);
String code = member.getCode();
member.setCode(StringUtils.isEmpty(code)?String.valueOf(IdWorker.generator()):code);
member.setNickname(platformAccount);
member.setType(1);
Long memberId = this.memberService.create(member);
if (Objects.nonNull(memberId)) {
UserTv userTv = new UserTv();
BeanUtils.copyProperties(resources,userTv);
userTv.setPlatformAccount(platformAccount);
userTv.setMemberCode(member.getCode());
this.userTvService.create(userTv);
}
} else {
return false;
}
return true;
}
/**
* 绑定会员中的userIptvId字段
* @param resources
*/
private MemberDTO bindIptvId(MemberDTO resources,UserTvDTO userTvDTO) {
String platform = userTvDTO.getPlatform();
// 绑定IPTV平台 0:未知;1:电信;2:移动;3:联通
Integer bindIptvPlatformType = 0;
// 联通
if (UserConstant.platform_lt.contains(platform)) {
bindIptvPlatformType = PLATFORM_LIST[3];
}
// 移动
if (UserConstant.platform_yd.contains(platform)) {
bindIptvPlatformType = PLATFORM_LIST[2];
}
// 电信
if (UserConstant.platform_dx.contains(platform)) {
bindIptvPlatformType = PLATFORM_LIST[1];
}
return this.bindIptvId(resources,userTvDTO.getId(),bindIptvPlatformType);
}
/**
* 绑定会员中的userIptvId字段
* @param userIptvId
* @param bindIptvPlatformType
*/
private MemberDTO bindIptvId(MemberDTO memberDTO,Long userIptvId,Integer bindIptvPlatformType) {
//MemberDTO memberDTO = this.memberService.getByCode(resources.getCode());
if (memberDTO != null) {
memberDTO.setUserIptvId(userIptvId);
memberDTO.setBindIptvTime(TimestampUtil.now());
memberDTO.setBindIptvPlatformType(bindIptvPlatformType);
}
return memberDTO;
}
/**
* 修改会员
* @param memberDTO
*/
private void doUpdateMemberByMemberDTO(MemberDTO memberDTO){
Member member = new Member();
BeanUtils.copyProperties(memberDTO,member);
this.doUpdateMember(member);
}
/**
* 修改会员
* @param member
*/
private void doUpdateMember(Member member){
this.memberService.update(member);
}
/**
* 解析微信信息
* @param resources
* @return
*/
@Override
public MemberProfile saveUserWeixinPhone(WeiXinUserBean resources) {
DefaultWeiXinBeanDefinition weiXinBeanDefinition = this.parseAppletInfo(resources);
if (Objects.nonNull(weiXinBeanDefinition.getOpenId())) {
throw new RuntimeException("微信信息解析失败!");
}
// 保存、修改会员加密信息
return this.doSaveOrUpdateMemberProfile(weiXinBeanDefinition,resources);
}
/**
* 保存、修改会员加密信息
* @param resources
* @return
*/
private MemberProfile doSaveOrUpdateMemberProfile(DefaultWeiXinBeanDefinition resources,WeiXinUserBean weiXinUserBean) {
// 会员
MemberDTO memberDTO = this.findMemberById(weiXinUserBean.getMemberId());
if (Objects.nonNull(memberDTO)) {
Long memberId = memberDTO.getId();
// 会员加密信息
MemberProfileDTO memberProfileDTO = this.findMemberProfileByMemberId(memberId);
MemberProfile memberProfile = new MemberProfile();
if (Objects.nonNull(memberProfileDTO)) {
BeanUtils.copyProperties(memberProfileDTO , memberProfile);
}
memberProfile.setMemberId(memberId);
memberProfile.setPhone(resources.getPhoneNumber());
// 保存、更新会员加密信息
MemberProfile memberProfile1 = this.saveMemberProfile(memberProfile);
return memberProfile1;
}
return null;
}
private MemberProfileDTO findMemberProfileByMemberId(Long memberId) {
MemberProfileDTO memberProfileDTO = this.memberProfileService.findByMemberId(memberId);
return memberProfileDTO;
}
private MemberProfile saveMemberProfile(MemberProfile memberProfile) {
return this.memberProfileService.create(memberProfile);
}
}
package com.topdraw.business.process.service.impl;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.user.iptv.domain.UserTv;
import com.topdraw.business.basicdata.user.iptv.repository.UserTvRepository;
import com.topdraw.business.basicdata.user.iptv.service.UserTvService;
import com.topdraw.business.basicdata.user.iptv.service.dto.UserTvDTO;
import com.topdraw.business.basicdata.user.iptv.service.mapper.UserTvMapper;
import com.topdraw.business.process.service.UserTvOperationService;
import com.topdraw.config.LocalConstants;
import com.topdraw.util.Base64Util;
import com.topdraw.util.IdWorker;
import com.topdraw.util.RedissonUtil;
import com.topdraw.util.TimestampUtil;
import com.topdraw.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Objects;
@Service
@Slf4j
public class UserTvOperationServiceImpl implements UserTvOperationService {
@Autowired
private RedissonClient redissonClient;
@Autowired
private MemberService memberService;
@Autowired
private UserTvService userTvService;
@Override
@Transactional
public boolean createMemberByUserTv(UserTv resources) {
String platformAccount = resources.getPlatformAccount();
UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
if (Objects.isNull(userTvDTO)) {
Member member = new Member();
// 大屏
member.setType(LocalConstants.MEMBER_PLATFORM_TYPE_VIS);
String code = member.getCode();
member.setCode(StringUtils.isEmpty(code)?String.valueOf(IdWorker.generator()):code);
String platformAccount1 = resources.getPlatformAccount();
member.setNickname(Base64Util.encode(platformAccount1));
member.setBindIptvPlatformType(1);
member.setType(1);
Long memberId = this.memberService.create(member);
if (Objects.nonNull(memberId)) {
UserTv userTv = new UserTv();
BeanUtils.copyProperties(resources,userTv);
userTv.setPlatformAccount(platformAccount);
userTv.setMemberCode(member.getCode());
Long userIptvId = this.userTvService.create(userTv);
if (Objects.nonNull(userIptvId)) {
member.setId(memberId);
member.setUserIptvId(userIptvId);
member.setBindIptvTime(TimestampUtil.now());
member.setPlatformAccount(platformAccount);
this.bindIptvId(member);
}
}
} else {
return false;
}
return true;
}
private void bindIptvId(Member resources) {
RLock rLock = this.redissonClient.getLock("Member::update::code" + resources.getCode());
try {
RedissonUtil.lock(rLock);
MemberDTO member = this.memberService.getByCode(resources.getCode());
if (member!=null) {
this.memberService.update(resources);
}
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
RedissonUtil.unlock(rLock);
}
}
}
package com.topdraw.config;
import cn.hutool.core.util.StrUtil;
public class RedisKeyUtil {
/**
* @return java.lang.String
* @description 订阅号大屏扫码关注
* @author Hongyan Wang
* @date 2021/8/24 1:36 下午
*/
public static String genSeSuSubscribeKey(String unionid) {
return StrUtil.format("BMSubscribe_unionid_{}", unionid);
}
}
......@@ -19,7 +19,7 @@ public class MessageProducer {
private AmqpTemplate amqpTemplate;
@Value("${service.platform}")
@Value("${uc.service.platform}")
private String platformType;
public void sendMessage(String msg,String exchangeName){
......
package com.topdraw.resttemplate;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.business.basicdata.member.address.domain.MemberAddress;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
......@@ -17,7 +17,7 @@ import java.util.Map;
@Slf4j
@Component
public class ApiUtil {
public class RestTemplateClient {
private static RestTemplate restTemplate;
......
package com.topdraw.schedule;
import com.topdraw.business.basicdata.points.available.service.PointsAvailableService;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.basicdata.points.standingbook.domain.PointsStandingBook;
import com.topdraw.business.basicdata.points.standingbook.service.PointsStandingBookService;
import com.topdraw.business.process.service.PointsOperationService;
import com.topdraw.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.After;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.util.List;
/**
* 积分台账
......
package com.topdraw.security;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.AlgorithmParameters;
import java.security.Key;
import java.security.Security;
import java.security.spec.AlgorithmParameterSpec;
import java.util.Arrays;
@Slf4j
public class AESUtil {
public static String encrypt(String data, String key) {
String strResult = null;
try {
SecretKey secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
AlgorithmParameterSpec aps = new IvParameterSpec("0123456789ABCDEF".getBytes("UTF-8"));
cipher.init(Cipher.ENCRYPT_MODE, secretKey, aps);
byte[] result = cipher.doFinal(data.getBytes("UTF-8"));
StringBuilder sb_hex = new StringBuilder();
for (byte b : result) {
sb_hex.append(String.format("%02x", b));
}
strResult = sb_hex.toString();
} catch (Exception e) {
}
return strResult;
}
public static String decrypt(String encryptedData, String key) {
String strResult = null;
try {
int len = encryptedData.length() / 2;
byte[] data = new byte[len];
for (int i = 0; i < len; i++) {
String str = encryptedData.substring(i * 2, i * 2 + 2);
data[i] = Integer.valueOf(str, 16).byteValue();
}
SecretKey secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
AlgorithmParameterSpec aps = new IvParameterSpec("0123456789ABCDEF".getBytes("UTF-8"));
cipher.init(Cipher.DECRYPT_MODE, secretKey, aps);
byte[] result = cipher.doFinal(data);
strResult = new String(result, "UTF-8");
} catch (Exception e) {
}
return strResult;
}
private static final String AES ="AES";
private static final String AES_CBC_PKCS7 ="AES/CBC/PKCS7Padding";
public static String decryptJsUserInfo(String encryptedData,String iv,String sessionKey) {
try {
byte[] data = java.util.Base64.getDecoder().decode(encryptedData);
byte[] aseKey = java.util.Base64.getDecoder().decode(sessionKey);
byte[] ivData = java.util.Base64.getDecoder().decode(iv);
Security.addProvider(new BouncyCastleProvider());
Cipher cipher = Cipher.getInstance(AES_CBC_PKCS7);
Key sKeySpec = new SecretKeySpec(aseKey, AES);
AlgorithmParameterSpec aps = new IvParameterSpec(ivData);
cipher.init(Cipher.DECRYPT_MODE, sKeySpec, aps);// 初始化
byte[] result = cipher.doFinal(data);
return new String(result);
} catch (Exception e) {
log.error("decryptJsUserInfo:"+ e);
return null;
}
}
public static JSONObject decryptJsUserPhone(String encryptedData, String iv, String key) {
byte[] dataByte = java.util.Base64.getDecoder().decode(encryptedData);
// 加密秘钥
byte[] keyByte = java.util.Base64.getDecoder().decode(key);
// 偏移量
byte[] ivByte = java.util.Base64.getDecoder().decode(iv);
try {
// 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
int base = 16;
if (keyByte.length % base != 0) {
int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
byte[] temp = new byte[groups * base];
Arrays.fill(temp, (byte) 0);
System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
keyByte = temp;
}
// 初始化
Security.addProvider(new BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding","BC");
SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
parameters.init(new IvParameterSpec(ivByte));
cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化
byte[] resultByte = cipher.doFinal(dataByte);
if (null != resultByte && resultByte.length > 0) {
String result = new String(resultByte, "UTF-8");
return JSONObject.parseObject(result);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package com.topdraw.weixin.applet;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
import com.topdraw.security.AESUtil;
import com.topdraw.utils.StringUtils;
import com.topdraw.weixin.beans.DefaultWeiXinBeanDefinition;
import com.topdraw.weixin.beans.WeiXinUserParser;
import com.topdraw.weixin.beans.config.WeiXinAppListConfig;
import com.topdraw.weixin.util.WeChatConstants;
import com.topdraw.weixin.util.WeiXinRequestUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Component
public class WeiXinAppletUserParser implements WeiXinUserParser {
@Autowired
private WeiXinAppListConfig weiXinAppListConfig;
@Autowired
private WeiXinRequestUtil weixinRequestUtil;
@Value("${uc.service.platform:}")
private String platform;
@Value("${key:}")
private String key;
@Value("${uc.app.subAppId:wx05f35931270014be}")
private String subAppId;
@Value("${uc.app.h5AppId:wxca962918dfeed88c}")
private String h5AppId;
@Value("${uc.app.appletAppid:wxc57d42de3d351cec}")
private String appletAppid;
@Value("${file.upload:upload}")
private String filePath;
@Override
public DefaultWeiXinBeanDefinition parse(WeiXinUserBean resources) {
String key = this.key;
Map<String, String> weixinInfoMap = null;
String appId = resources.getWxAppid();
String code = resources.getWxCode();
String userInfo = null;
if (StringUtils.isNotBlank(appId)) {
String decrypt = AESUtil.decrypt(appId, key);
if (decrypt != null) {
appId = decrypt.substring(16);
}
weixinInfoMap = getWeixinInfoByAppid(appId);
}
if (StringUtils.isNotBlank(code)) {
String decrypt = AESUtil.decrypt(code, key);
if (decrypt != null) {
code = decrypt.substring(16);
}
}
if (StringUtils.isNotBlank(userInfo)) {
String decrypt = AESUtil.decrypt(userInfo, key);
if (decrypt != null) {
userInfo = decrypt.substring(16);
}
}
return this.generateWeiXinBeanDefinition(code,userInfo,weixinInfoMap);
}
/**
*
* @param code
* @param userInfo
* @param weixinInfoMap
* @return
*/
private DefaultWeiXinBeanDefinition generateWeiXinBeanDefinition(String code, String userInfo, Map<String, String> weixinInfoMap) {
String appId = weixinInfoMap.get("appid");
String secret = weixinInfoMap.get("secret");
JSONObject userInfoWxJo = null;
// 链接微信服务器
/*ResponseEntity<String> responseEntity1 = null;*//*restTemplate.exchange(WeChatConstants.CODE2SESSION.replace("APPID", appId)
.replace("SECRET", secret).replace("JSCODE", code),
HttpMethod.GET, null, String.class);*//*
String entityBody1 = responseEntity1.getBody();*/
String url = WeChatConstants.CODE2SESSION.replace("APPID", appId)
.replace("SECRET", secret).replace("JSCODE", code);
String entityBody = HttpUtil.get(url);
JSONObject jsonObject = JSONObject.parseObject(entityBody);
String openId = jsonObject.getString("openid");
String unionId = jsonObject.getString("unionid");
if (StringUtils.isEmpty(unionId)) {
try {
userInfoWxJo = this.weixinRequestUtil.getUserInfo(weixinInfoMap, openId,code);
} catch (Exception e) {
e.printStackTrace();
}
}
if (StringUtils.isNotBlank(userInfo)) {
JSONObject userInfoJo = JSONObject.parseObject(userInfo);
String encryptedData = userInfoJo.getString("encryptedData");
String iv = userInfoJo.getString("iv");
String key = jsonObject.getString("session_key");
String userInfoWeixin = AESUtil.decryptJsUserInfo(encryptedData, iv, key);
if (StringUtils.isNotEmpty(userInfoWeixin))
userInfoWxJo = JSONObject.parseObject(userInfoWeixin);
}
DefaultWeiXinBeanDefinition weiXinBeanDefinition =
new DefaultWeiXinBeanDefinition(appId,code,unionId,openId,userInfoWxJo);
return weiXinBeanDefinition;
}
/**
*
* @param appid
* @return
*/
private Map<String, String> getWeixinInfoByAppid(String appid) {
if (StringUtils.isBlank(appid)) {
throw new RuntimeException("wxAppid can not be null");
}
List<Map<String, String>> list = this.weiXinAppListConfig.getList();
Optional<Map<String, String>> weixinInfoOptional = list.stream().filter(o -> o.get("appid").equals(appid)).findFirst();
if (!weixinInfoOptional.isPresent()) {
throw new RuntimeException("wxAppid error, appid is : " + appid);
}
return weixinInfoOptional.get();
}
}
package com.topdraw.weixin.beans;
import lombok.Data;
@Data
public class ActionInfo {
private Scene scene;
}
package com.topdraw.weixin.beans;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.exception.BadRequestException;
import com.topdraw.utils.StringUtils;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Date;
import java.util.UUID;
@Data
@Component
public class DefaultWeiXinBeanDefinition implements WeiXinBeanDefinition {
//
private String appid;
private String openId;
private String code;
private String token;
private String secret;
private String unionId;
private String nickname;
private String headImgUrl;
private JSONObject userInfo;
private String phoneNumber;
@Value("${file.upload:upload}")
private String filePath;
public DefaultWeiXinBeanDefinition() {
}
public DefaultWeiXinBeanDefinition(String appId, String code,String unionId,String openId, JSONObject userInfoWxJo) {
this.userInfo = userInfoWxJo;
if (userInfo != null) {
if (StringUtils.isNotBlank(userInfoWxJo.getString("unionId"))) {
unionId = userInfoWxJo.getString("unionId");
}
if (StringUtils.isNotBlank(userInfoWxJo.getString("openId"))) {
openId = userInfoWxJo.getString("openId");
}
headImgUrl = userInfoWxJo.getString("avatarUrl");
if (StringUtils.isNotBlank(userInfoWxJo.getString("nickName"))) {
nickname = Base64.getEncoder().encodeToString(userInfoWxJo.getString("nickName").getBytes(StandardCharsets.UTF_8));
}
String phoneNumber = userInfoWxJo.getString("phoneNumber");
if (StringUtils.isBlank(phoneNumber)) {
throw new BadRequestException("phoneNumber is null...");
}
this.phoneNumber = phoneNumber;
if (StringUtils.isNotBlank(headImgUrl)) {
new Thread(() -> {
String s = UUID.randomUUID().toString();
File file = new File(System.getProperty("user.dir") + "/" + filePath + "/icon/" + DateUtil.format(new Date(), "yyyy-MM-dd"));
if (!file.exists()) {
file.mkdirs();
}
HttpUtil.downloadFile(headImgUrl, new File(System.getProperty("user.dir") + "/" + filePath + "/icon/" + DateUtil.format(new Date(), "yyyy-MM-dd") + "/" + s + ".jpg"));
headImgUrl = filePath + "/icon/" + DateUtil.format(new Date(), "yyyy-MM-dd") + "/" + s + ".jpg";
}).start();
}
}
this.unionId = unionId;
this.openId = openId;
this.appid = appId;
this.code = code;
}
@Override
public String getAppId() {
return this.appid;
}
@Override
public String getCode() {
return this.code;
}
@Override
public String getToken() {
return this.token;
}
@Override
public String getSecret() {
return this.secret;
}
@Override
public String getOpenId() {
return this.openId;
}
@Override
public String getUnionId() {
return this.unionId;
}
@Override
public String getNickname() {
return this.nickname;
}
@Override
public String getHeadImgUrl() {
return this.headImgUrl;
}
@Override
public JSONObject getUserInfo() {
return this.userInfo;
}
}
package com.topdraw.weixin.beans;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
@Data
public class QrCode {
@JSONField(name = "action_name")
private String actionName;
@JSONField(name = "expire_seconds")
private Integer expireSeconds;
@JSONField(name = "action_info")
private ActionInfo actionInfo;
}
package com.topdraw.weixin.beans;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
@Data
public class Scene {
@JSONField(name = "scene_id")
private Long sceneId;
@JSONField(name = "scene_str")
private String sceneStr;
}
package com.topdraw.weixin.beans;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WeiXinBean {
//
private String appid;
private String openId;
private String code;
private String token;
private String secret;
private String unionId;
private String nickname;
private String headImgUrl;
}
package com.topdraw.weixin.beans;
import com.alibaba.fastjson.JSONObject;
public interface WeiXinBeanDefinition {
String getAppId();
String getCode();
String getToken();
String getSecret();
String getOpenId();
String getUnionId();
String getNickname();
String getHeadImgUrl();
JSONObject getUserInfo();
}
package com.topdraw.weixin.beans;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.util.Map;
@Data
public class WeiXinNotice {
@JSONField(serialize=false)
private String appid;
@JSONField(serialize=false)
private Long userId;
//目标用户
@JSONField(name = "touser")
private String toUser;
// 模板code
@JSONField(serialize=false)
private String code;
// 模板id
@JSONField(name = "template_id")
private String templateId;
// 点击通知跳转页面
private String page;
// 小程序版本
@JSONField(name = "miniprogram_state")
private String miniprogramState;
// 填充数据
private Map<String, Object> data;
}
package com.topdraw.weixin.beans;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
public interface WeiXinUserParser {
DefaultWeiXinBeanDefinition parse(WeiXinUserBean appletUserLoginInfo);
}
package com.topdraw.weixin.beans.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Data
@Configuration
@ConfigurationProperties(prefix = "weixin")
public class WeiXinAppListConfig {
private List<Map<String, String>> list;
/*@Value("${uc.service.platform:}")
private String platform;
@Value("${key:}")
private String key;
@Value("${uc.app.subAppId:wx05f35931270014be}")
private String subAppId;
@Value("${uc.app.h5AppId:wxca962918dfeed88c}")
private String h5AppId;
@Value("${uc.app.appletAppid:wxc57d42de3d351cec}")
private String appletAppid;
@Value("${file.upload:upload}")
private String filePath;*/
}
package com.topdraw.weixin.util;
public class WeChatConstants {
public static String HTTPS_AUTHORIZE_WITH_SNSAPI_USERINFO = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
public static final String HTTPS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token";
public static final String HTTPS_TICKET_GETTICKET = "https://api.weixin.qq.com/cgi-bin/ticket/getticket";
public static final String HTTPS_SNS_OAUTH2_ACCESS_TOKEN = "https://api.weixin.qq.com/sns/oauth2/access_token";
public static final String HTTPS_SNS_USERINFO = "https://api.weixin.qq.com/sns/userinfo";
public static final String CODE2SESSION = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code";
/**
* 把媒体文件上传到微信服务器。目前仅支持图片。用于发送客服消息或被动回复用户消息。
*/
public static String UPLOAD_URL = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type=image";
/**
* 获取客服消息内的临时素材。即下载临时的多媒体文件。
*/
public static String GET_MEDIA = "https://api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}";
/**
* 用于向微信服务端申请二维码的url
*/
public static String URL_QR_CODE = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={0}";
/**
* 用于聊天时向用户发送消息的url
*/
public static String CUSTOM_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}";
/**
* 发送小程序订阅消息
*/
public static final String SUBSCRIBE_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={0}";
/**
* 生成带参数二维码
*/
public static final String QR_CODE_URL = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}";
/**
* 获取用户基本信息
*/
public static final String GET_USER_INFO = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN";
// 批量获取关注者列表
public static final String GET_USER_LIST = "https://api.weixin.qq.com/cgi-bin/user/get?access_token={0}&next_openid={1}";
/**
* 成功
*/
public static String SUCCESS = "SUCCESS";
/**
* 微信系统错误
*/
public static String SYSTEMERROR = "SYSTEMERROR";
/**
* 失败 (注意:微信有的接口返回的失败用FAIL字符串表示,有的接口用FAILED表示)
*/
public static String FAIL = "FAIL";
/**
* 微信企业付款到个人失败 (注意:微信有的接口返回的失败用FAIL字符串表示,有的接口用FAILED表示)
*/
public static String FAILED = "FAILED";
public static String ACCESS_TOKEN = "access_token";
public static String ERR_CODE = "errcode";
/**
* 微信请求时,返回ACCESS_TOKEN错误码
*/
public static final String ACCESS_TOKEN_INVALID_CODE = "40001";
/**
* 文本消息
*/
public static String MSG_TYPE_TEXT = "text";
public static String MSG_TYPE_MINIPROGRAMPAGE = "miniprogrampage";
public static String MSG_TYPE_LINK = "link";
public static String MSG_TYPE_IMAGE = "image";
/**
* 事件消息
*/
public static String MSG_TYPE_EVENT = "event";
/**
* 二维码类型,临时的整型参数值
*/
public static String QR_SCENE = "QR_SCENE";
/**
* 二维码类型,临时的字符串参数值
*/
public static String QR_STR_SCENE = "QR_STR_SCENE";
/**
* 二维码类型,永久的整型参数值
*/
public static String QR_LIMIT_SCENE = "QR_LIMIT_SCENE";
/**
* 二维码类型,永久的字符串参数值
*/
public static String QR_LIMIT_STR_SCENE = "QR_LIMIT_STR_SCENE";
/******** 事件推送事件类型BEGIN********/
/**
* 取消订阅
*/
public static final String EVENT_UNSUBSCRIBE = "unsubscribe";
/**
* 订阅
*/
public static final String EVENT_SUBSCRIBE = "subscribe";
/**
* 扫描带参数二维码事件,用户已关注时的事件推送
*/
public static final String EVENT_SCAN = "SCAN";
/**
* 上报地理位置事件
*/
public static final String EVENT_LOCATION = "LOCATION";
/**
* 自定义菜单事件
*/
public static final String EVENT_CLICK = "CLICK";
/******** 事件推送事件类型END********/
/**
* 微信ACCESS_TOKEN缓存KEY
*/
public static final String TOKEN_KEY = "GLOBAL_WX_ACCESS_TOKEN_";
/**
* 微信临时素材缓存KEY
*/
public static final String WEIXIN_MEDIA_KEY = "WEIXIN_MEDIA_KEY_";
// 微信应用类型 小程序 服务号 订阅号
// 小程序
public static final String WX_APPLET = "applet";
// 服务号
public static final String WX_SERVICE = "service";
// 订阅号
public static final String WX_SUBSCRIPTION = "subscription";
}
package com.topdraw.weixin.util;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.StringUtils;
import com.topdraw.weixin.beans.QrCode;
import com.topdraw.weixin.beans.WeiXinNotice;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Component
@Slf4j
public class WeiXinRequestUtil {
@Autowired
private RedisUtils redisUtils;
/**
*
* */
private static String doGet(String url, Map<String, String> param) {
String result = null;
try {
String queryString = "";
if (null != param) {
for (Map.Entry<String, String> entry : param.entrySet()) {
queryString += entry.getKey() + "=" + URLEncoder.encode("" + entry.getValue(), "UTF-8") + "&";
}
if (queryString.length() > 0) {
queryString = queryString.substring(0, queryString.length() - 1);
}
}
log.info("weixin request: " + url + "?" + queryString);
HttpResponse response = HttpRequest.get(url + "?" + queryString).execute();
if (response.isOk()) {
result = response.body();
log.info("weixin response: " + result);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
private String wx_token(String appid, String secret) {
Map<String, String> param = new HashMap<>();
param.put("grant_type", "client_credential");
param.put("appid", appid);
param.put("secret", secret);
return this.doGet(WeChatConstants.HTTPS_TOKEN, param);
}
@Retryable(value = Exception.class, maxAttempts = 2, backoff = @Backoff(delay = 0L, multiplier = 0.0))
public String wx_ticket_getticket(String appid, String secret) {
String token = getToken(appid, secret,null);
Map<String, String> param = new HashMap<>();
param.put("access_token", token);
param.put("type", "jsapi");
return doGet(WeChatConstants.HTTPS_TICKET_GETTICKET, param);
}
public String wx_sns_oauth2_access_token(String appid, String secret, String code) {
Map<String, String> param = new HashMap<>();
param.put("appid", appid);
param.put("secret", secret);
param.put("code", code);
param.put("grant_type", "authorization_code");
return doGet(WeChatConstants.HTTPS_SNS_OAUTH2_ACCESS_TOKEN, param);
}
public String wx_sns_userinfo(String oauth2_access_token, String openid) {
Map<String, String> param = new HashMap<>();
param.put("access_token", oauth2_access_token);
param.put("openid", openid);
param.put("lang", "zh_CN");
return doGet(WeChatConstants.HTTPS_SNS_USERINFO, param);
}
public String wx_get_userinfo(String oauth2_access_token, String openid) {
Map<String, String> param = new HashMap<>();
param.put("access_token", oauth2_access_token);
param.put("openid", openid);
param.put("lang", "zh_CN");
return doGet(WeChatConstants.GET_USER_INFO, param);
}
public String getToken(String appid, String secret,String code) {
String token = (String) redisUtils.get(WeChatConstants.TOKEN_KEY + appid);
if (StringUtils.isNotBlank(token)) {
return token;
}
token = this.getTokenNoRedis(appid, secret,code);
return token;
}
public String getToken(String appid, String secret) {
String token = (String) redisUtils.get(WeChatConstants.TOKEN_KEY + appid);
if (StringUtils.isNotBlank(token)) {
return token;
}
token = this.getTokenNoRedis(appid, secret,null);
return token;
}
public String getTokenNoRedis(String appid, String secret,String code) {
String token = null;
String response = this.wx_token(appid, secret);
// String response = this.wx_sns_oauth2_access_token(appid, secret,code);
try {
JSONObject joToken = JSON.parseObject(response);
if (null != joToken && null != joToken.getString("access_token")) {
token = joToken.getString("access_token");
Integer expiresIn = joToken.getInteger("expires_in");
redisUtils.set(WeChatConstants.TOKEN_KEY + appid, token, expiresIn, TimeUnit.SECONDS);
}
} catch (Exception e) {
e.printStackTrace();
}
return token;
}
public String getTokenNoRedis(String appid, String secret) {
String token = null;
// String response = this.wx_token(appid, secret);
String response = this.wx_sns_oauth2_access_token(appid, secret,null);
try {
JSONObject joToken = JSON.parseObject(response);
if (null != joToken && null != joToken.getString("access_token")) {
token = joToken.getString("access_token");
Integer expiresIn = joToken.getInteger("expires_in");
redisUtils.set(WeChatConstants.TOKEN_KEY + appid, token, expiresIn, TimeUnit.SECONDS);
}
} catch (Exception e) {
e.printStackTrace();
}
return token;
}
/**
* 发送订阅消息,access_token错误时,重新获取进行重试
*
* @param weixinInfo 微信参数
* @param request 订阅消息内容
*/
@Retryable(value = Exception.class, maxAttempts = 2, backoff = @Backoff(delay = 0L, multiplier = 0.0))
public void sendNotice(Map<String, String> weixinInfo, WeiXinNotice request) {
String accessToken = getToken(weixinInfo.get("appid"), weixinInfo.get("secret"));
String url = MessageFormat.format(WeChatConstants.SUBSCRIBE_SEND_URL, accessToken);
log.info("send notice request : " + JSONObject.toJSONString(request));
HttpResponse response = HttpRequest.post(url).body(JSONObject.toJSONString(request), "application/json;charset=utf-8").execute();
if (!response.isOk()) {
log.error("send notice error || {}", response);
throw new RuntimeException("send notice error");
}
JSONObject jsonObject = JSONObject.parseObject(response.body());
Integer errCode = jsonObject.getInteger(WeChatConstants.ERR_CODE);
if (errCode != null && errCode != 0) {
if (WeChatConstants.ACCESS_TOKEN_INVALID_CODE.equals(errCode.toString())) {
getTokenNoRedis(weixinInfo.get("appid"), weixinInfo.get("secret"));
}
// 返回errCode时,也输出返回的结果信息
log.error("send notice error || {}", response.body());
throw new RuntimeException("send notice error");
}
log.info("send notice response : " + response.body());
}
/**
* 微信小程序客服发送消息,access_token错误时,重新获取进行重试
*
* @param weixinInfo 微信参数
* @param body 消息内容
*/
@Retryable(value = Exception.class, maxAttempts = 2, backoff = @Backoff(delay = 0L, multiplier = 0.0))
public void sendMessage(Map<String, String> weixinInfo, String body) {
String accessToken = getToken(weixinInfo.get("appid"), weixinInfo.get("secret"));
String url = MessageFormat.format(WeChatConstants.CUSTOM_SEND_URL, accessToken);
HttpResponse response = HttpRequest.post(url).body(body, "application/json;charset=utf-8").execute();
if (!response.isOk()) {
log.error("send message error || {}", response);
throw new RuntimeException("send message error");
}
log.info("send message response || {}", response.body());
JSONObject jsonObject = JSONObject.parseObject(response.body());
Integer errCode = jsonObject.getInteger(WeChatConstants.ERR_CODE);
if (errCode != null && errCode != 0) {
if (WeChatConstants.ACCESS_TOKEN_INVALID_CODE.equals(errCode.toString())) {
getTokenNoRedis(weixinInfo.get("appid"), weixinInfo.get("secret"));
}
throw new RuntimeException("send message error");
}
}
/**
* 上传临时素材返回mediaId,access_token错误时,重新获取进行重试
*
* @param weixinInfo 微信参数
* @param imagePath 素材路径
*/
@Retryable(value = Exception.class, maxAttempts = 2, backoff = @Backoff(delay = 0L, multiplier = 0.0))
public String getMediaId(Map<String, String> weixinInfo, String imagePath) throws IOException {
String accessToken = getToken(weixinInfo.get("appid"), weixinInfo.get("secret"));
String mediaId = (String) redisUtils.get(WeChatConstants.WEIXIN_MEDIA_KEY + weixinInfo.get("appid"));
if (StringUtils.isNotBlank(mediaId)) {
return mediaId;
}
String url = MessageFormat.format(WeChatConstants.UPLOAD_URL, accessToken);
HttpResponse response = HttpRequest.post(url).form("file", new File(imagePath)).execute();
if (!response.isOk()) {
log.error("upload image error || {}", response);
throw new RuntimeException("upload image error");
}
log.info("upload image response || {}", response.body());
JSONObject jsonObject = JSONObject.parseObject(response.body());
Integer errCode = jsonObject.getInteger(WeChatConstants.ERR_CODE);
if (errCode != null && errCode != 0) {
if (WeChatConstants.ACCESS_TOKEN_INVALID_CODE.equals(errCode.toString())) {
getTokenNoRedis(weixinInfo.get("appid"), weixinInfo.get("secret"));
}
throw new RuntimeException("upload image error");
}
mediaId = jsonObject.getString("media_id");
redisUtils.set(WeChatConstants.WEIXIN_MEDIA_KEY + weixinInfo.get("appid"), mediaId, 60, TimeUnit.HOURS);
return mediaId;
}
/**
* 公众号获取带参数二维码,access_token错误时,重新获取进行重试
*
* @param weixinInfo 微信参数
* @param qrCode 二维码信息
*/
@Retryable(value = Exception.class, maxAttempts = 2, backoff = @Backoff(delay = 0L, multiplier = 0.0))
public JSONObject getQrCode(Map<String, String> weixinInfo, QrCode qrCode) throws IOException {
String accessToken = getToken(weixinInfo.get("appid"), weixinInfo.get("secret"));
String url = MessageFormat.format(WeChatConstants.QR_CODE_URL, accessToken);
HttpResponse response = HttpRequest.post(url).body(JSONObject.toJSONString(qrCode), "application/json;charset=utf-8").execute();
if (!response.isOk()) {
log.error("get qrCode error || {}", response);
throw new RuntimeException("get qrCode error");
}
log.info("get qrCode response || {}", response.body());
JSONObject jsonObject = JSONObject.parseObject(response.body());
Integer errCode = jsonObject.getInteger(WeChatConstants.ERR_CODE);
if (errCode != null && errCode != 0) {
if (WeChatConstants.ACCESS_TOKEN_INVALID_CODE.equals(errCode.toString())) {
getTokenNoRedis(weixinInfo.get("appid"), weixinInfo.get("secret"));
}
throw new RuntimeException("get qrCode error");
}
return jsonObject;
}
/**
* 公众号获取用户信息,access_token错误时,重新获取进行重试
*
* @param weixinInfo 微信参数
* @param openid 用户openid
*/
@Retryable(value = Exception.class, maxAttempts = 2, backoff = @Backoff(delay = 0L, multiplier = 0.0))
public JSONObject getUserInfo(Map<String, String> weixinInfo, String openid,String code) throws IOException {
String accessToken = this.getToken(weixinInfo.get("appid"), weixinInfo.get("secret"),code);
String url = MessageFormat.format(WeChatConstants.GET_USER_INFO, accessToken, openid);
// String url = MessageFormat.format(WeChatConstants.HTTPS_SNS_USERINFO, accessToken, openid);
// String url = MessageFormat.format(WeChatConstants.HTTPS_AUTHORIZE_WITH_SNSAPI_USERINFO, accessToken, openid);
HttpResponse response = HttpRequest.get(url).execute();
if (!response.isOk()) {
log.error("get userInfo error || {}", response);
throw new RuntimeException("get userInfo error");
}
log.info("get userInfo response || {}", response.body());
JSONObject jsonObject = JSONObject.parseObject(response.body());
Integer errCode = jsonObject.getInteger(WeChatConstants.ERR_CODE);
if (errCode != null && errCode != 0) {
if (WeChatConstants.ACCESS_TOKEN_INVALID_CODE.equals(errCode.toString())) {
this.getTokenNoRedis(weixinInfo.get("appid"), weixinInfo.get("secret"));
}
throw new RuntimeException("get userInfo error");
}
return jsonObject;
}
/**
* @param weixinInfo
* @param nextOpenId
* @return com.alibaba.fastjson.JSONObject
* @description 公众号批量获取关注者列表,不传nextOpenId默认从头开始拉取,引用重试机制
* @author Hongyan Wang
* @date 2021/9/2 9:42 上午
*/
@Retryable(value = Exception.class, maxAttempts = 2, backoff = @Backoff(delay = 0L, multiplier = 0.0))
public JSONObject getUserList(Map<String, String> weixinInfo, String nextOpenId) {
String accessToken = getToken(weixinInfo.get("appid"), weixinInfo.get("secret"));
// 不传next_openid,默认从头开始拉取
if (StrUtil.isBlank(nextOpenId))
nextOpenId = "";
String url = MessageFormat.format(WeChatConstants.GET_USER_LIST, accessToken, nextOpenId);
HttpResponse response = HttpRequest.get(url).execute();
if (!response.isOk()) {
log.error("get userList error || {}", response);
throw new RuntimeException("get userList error");
}
log.info("get userList response || {}", response.body());
//返回Json样例
// {
// "total":2,
// "count":2,
// "data":{
// "openid":["OPENID1","OPENID2"]},
// "next_openid":"NEXT_OPENID"
//}
JSONObject jsonObject = JSONObject.parseObject(response.body());
Integer errCode = jsonObject.getInteger(WeChatConstants.ERR_CODE);
if (errCode != null && errCode != 0) {
if (WeChatConstants.ACCESS_TOKEN_INVALID_CODE.equals(errCode.toString())) {
getTokenNoRedis(weixinInfo.get("appid"), weixinInfo.get("secret"));
}
throw new RuntimeException("get userList error");
}
return jsonObject;
}
}
......@@ -6,14 +6,6 @@ spring:
username: root
password: Tjlh@2017
# url: jdbc:log4jdbc:mysql://47.100.212.170:3306/ucs?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
# username: root
# password: Tjlh@2021
# url: jdbc:log4jdbc:mysql://122.112.214.149:3306/tj_user?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
# username: root
# password: root
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#Druid
type: com.alibaba.druid.pool.DruidDataSource
......@@ -62,20 +54,8 @@ spring:
# host: 139.196.4.234
port: 6379
password: redis123
# password:
#连接超时时间
timeout: 5000
# rabbitmq:
# host: 47.100.212.170 # rabbitmq的连接地址
## host: 122.112.214.149 # rabbitmq的连接地址
# #host: 139.196.192.242 # rabbitmq的连接地址
# port: 5672 # rabbitmq的连接端口号
# #virtual-host: /member_center # rabbitmq的虚拟host
# #username: member_center # rabbitmq的用户名
# #password: Tjlh@2021 # rabbitmq的密码
# virtual-host: test # rabbitmq的虚拟host
# username: omo_test # rabbitmq的用户名
# password: omo_test # rabbitmq的密码
rabbitmq:
host: 139.196.145.150 # rabbitmq的连接地址
port: 5672 # rabbitmq的连接端口号
......@@ -107,3 +87,54 @@ generator:
swagger:
enabled: true
file:
path: system/file
avatar: system/avatar
upload: upload
# 文件大小 /M
maxSize: 100
avatarMaxSize: 5
key: 529ec7fe7bb54c38
uc:
service:
platform: service
type: mobile
app:
subAppId: wx5d88c7fe99f89f32
#服务号:品运营讨论探究创造团
h5AppId: wx37ea49702cdc693b
#熊猫小程序:熊猫少儿创造团
appletAppid: wxfaa765183a332521
weixin:
list:
- appid: wxfaa765183a332521
secret: b5c1c39cb95b45b599a02fd68b5fcf17
token:
encodingAesKey:
imagePath:
content: 长按识别二维码,加入微信群。
miniprogramState: formal
# 点击模板卡片后的默认跳转页面
page: pages/index/main
# 生成带参数二维码的有效期
qrCodeExpireSeconds: 86400
env: dev
# 订阅号
- appid: wx5d88c7fe99f89f32
secret: b213afe99a469d4be576f330dad643b8
token: topdraw
encodingAesKey: g3mYB6yx2ZiebxwKcI1H2iw3LlYNBHb7PqsVYFHUQzi
# 应用类型 小程序 服务号 订阅号, 当前基于订阅号有特殊逻辑
appType: subscription
imagePath: /topdraw/app/user_center_service_te/upload/customer/weChat.png
content: 长按识别二维码,关注订阅号。
miniprogramState: formal
# 点击模板卡片后的默认跳转页面
page: pages/index/main
# 生成带参数二维码的有效期
qrCodeExpireSeconds: 300
env: dev
......
package com.topdraw;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.module.mq.DataSyncMsg;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -21,16 +23,8 @@ public class BaseTest {
}
public static void main(String[] args) {
String a = "<p>gfdsgf <video controls=\"controls\" width=\"300\" height=\"150\">\n" +
"<source src=\"dddd\" /></video></p>";
String c = "<p>测试正文<br /><br /><video controls=\"controls\" width=\"360\" height=\"180\">\n" +
"<source src=\"test\" /></video></p>";
String b = "{{nas-base-url.cms-upload}}/upload/commonFile/theme_activity/2021-12-15/aebd8dbb-87bb-4523-921f-4354c3298fdd.mp4";
String s = replaceUrl(c, b);
System.out.println(s);
String param = "{\"category\":\"common_member\"}";
DataSyncMsg.TaskTemplateParam taskTemplateParam = JSONObject.parseObject(param, DataSyncMsg.TaskTemplateParam.class);
System.out.println(taskTemplateParam);
}
}
......
......@@ -39,16 +39,16 @@ public class GeneratorCode extends BaseTest {
@Rollback(value = false)
@Transactional(rollbackFor = Exception.class)
public void generator() {
var dbName = "uc_user_weixin";
var dbName = "tr_task_attr";
// 表名称,支持多表
var tableNames = Arrays.asList(dbName);
String[] s = dbName.split("_");
var pre = s[0];
var target1 = s[s.length-1];
var preRoute = "com.topdraw.business.basicdata.user.";
var preRoute = "com.topdraw.business.module.task.";
StringBuilder builder = new StringBuilder(preRoute);
builder.append("weixin");
builder.append("attribute");
// builder.append(target);
tableNames.forEach(tableName -> {
......
package com.topdraw.test.business.basicdata.member;
import com.topdraw.business.basicdata.member.rest.MemberController;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.rest.MemberController;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.BaseTest;
import com.topdraw.common.ResultInfo;
import org.junit.Test;
......
......@@ -2,10 +2,8 @@ package com.topdraw.test.business.basicdata.member.profile;
import com.alibaba.fastjson.JSON;
import com.topdraw.BaseTest;
import com.topdraw.business.basicdata.member.profile.domain.MemberProfile;
import com.topdraw.business.basicdata.member.profile.service.MemberProfileService;
import com.topdraw.business.basicdata.member.service.MemberService;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.util.TimestampUtil;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.basicdata.member.rest;
import com.alibaba.fastjson.JSON;
import com.topdraw.business.basicdata.member.address.domain.MemberAddress;
import com.topdraw.business.basicdata.member.address.rest.MemberAddressController;
import com.topdraw.business.basicdata.member.address.service.dto.MemberAddressQueryCriteria;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.address.rest.MemberAddressController;
import com.topdraw.business.module.member.address.service.dto.MemberAddressQueryCriteria;
import com.topdraw.common.ResultInfo;
import com.topdraw.BaseTest;
import org.junit.Test;
......
package com.topdraw.test.business.basicdata.member.rest;
import com.alibaba.fastjson.JSON;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.basicdata.member.rest.MemberController;
import com.topdraw.business.basicdata.member.service.dto.MemberQueryCriteria;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.rest.MemberController;
import com.topdraw.common.ResultInfo;
import com.topdraw.BaseTest;
import com.topdraw.util.IdWorker;
import com.topdraw.util.TimestampUtil;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
public class MemberControllerTest extends BaseTest {
......
......@@ -2,9 +2,8 @@ package com.topdraw.test.business.basicdata.member.rest;
import com.alibaba.fastjson.JSON;
import com.topdraw.BaseTest;
import com.topdraw.business.basicdata.member.profile.domain.MemberProfile;
import com.topdraw.business.basicdata.member.profile.rest.MemberProfileController;
import com.topdraw.business.basicdata.member.profile.service.MemberProfileService;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.rest.MemberProfileController;
import com.topdraw.util.TimestampUtil;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.basicdata.member.rest;
import com.alibaba.fastjson.JSON;
import com.topdraw.business.basicdata.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.basicdata.member.relatedinfo.rest.MemberRelatedInfoController;
import com.topdraw.business.basicdata.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import com.topdraw.business.module.member.relatedinfo.rest.MemberRelatedInfoController;
import com.topdraw.business.module.member.relatedinfo.service.dto.MemberRelatedInfoQueryCriteria;
import com.topdraw.common.ResultInfo;
import com.topdraw.BaseTest;
import org.junit.Test;
......
package com.topdraw.test.business.basicdata.points;
import com.topdraw.business.basicdata.points.available.domain.PointsAvailable;
import com.topdraw.business.basicdata.points.available.service.PointsAvailableService;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.module.points.available.domain.PointsAvailable;
import com.topdraw.business.module.points.available.service.PointsAvailableService;
import com.topdraw.business.module.points.available.service.dto.PointsAvailableDTO;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.BaseTest;
import com.topdraw.util.DateUtil;
import com.topdraw.util.IdWorker;
import com.topdraw.util.TimestampUtil;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.basicdata.points;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.points.detail.domain.PointsDetail;
import com.topdraw.business.basicdata.points.detail.service.PointsDetailService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.points.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.service.PointsDetailService;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.BaseTest;
import com.topdraw.util.IdWorker;
import com.topdraw.util.TimestampUtil;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.basicdata.rights;
import com.topdraw.BaseTest;
import com.topdraw.business.basicdata.member.service.dto.MemberDTO;
import com.topdraw.business.basicdata.points.detail.domain.PointsDetail;
import com.topdraw.business.basicdata.points.detail.service.PointsDetailService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.points.detail.domain.PointsDetail;
import com.topdraw.business.module.points.detail.service.PointsDetailService;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.util.IdWorker;
import com.topdraw.util.TimestampUtil;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.basicdata.rights.history;
import com.topdraw.BaseTest;
import com.topdraw.business.basicdata.member.service.dto.MemberQueryCriteria;
import com.topdraw.business.basicdata.rights.history.rest.RightsHistoryController;
import com.topdraw.business.basicdata.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.business.basicdata.rights.rest.RightsController;
import com.topdraw.business.module.rights.history.rest.RightsHistoryController;
import com.topdraw.business.module.rights.history.service.dto.RightsHistoryQueryCriteria;
import com.topdraw.common.ResultInfo;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.basicdata.rights.permanentrights;
import com.topdraw.BaseTest;
import com.topdraw.business.basicdata.rights.permanentrights.rest.PermanentRightsController;
import com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsQueryCriteria;
import com.topdraw.business.basicdata.rights.rest.RightsController;
import com.topdraw.business.module.rights.permanentrights.rest.PermanentRightsController;
import com.topdraw.business.module.rights.permanentrights.service.dto.PermanentRightsQueryCriteria;
import com.topdraw.common.ResultInfo;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.basicdata.rights.rest;
import com.topdraw.BaseTest;
import com.topdraw.business.basicdata.rights.rest.RightsController;
import com.topdraw.business.module.rights.rest.RightsController;
import com.topdraw.common.ResultInfo;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.basicdata.task;
import com.topdraw.business.basicdata.task.template.domain.TaskTemplate;
import com.topdraw.business.basicdata.task.template.service.TaskTemplateService;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.service.TaskTemplateService;
import com.topdraw.BaseTest;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.process.rest;
import com.alibaba.fastjson.JSON;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryCriteria;
import com.topdraw.business.basicdata.points.available.service.dto.PointsAvailableQueryType;
import com.topdraw.business.basicdata.points.detail.rest.PointsDetailController;
import com.topdraw.BaseTest;
import com.topdraw.business.basicdata.points.detail.service.dto.PointsDetailQueryCriteria;
import com.topdraw.business.process.domian.TempPoints;
import com.topdraw.business.process.rest.PointsOperationController;
import com.topdraw.common.ResultInfo;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import java.sql.Timestamp;
import java.time.LocalDateTime;
public class PointsOperationControllerTest extends BaseTest {
......
......@@ -2,10 +2,9 @@ package com.topdraw.test.business.process.rest;
import com.topdraw.BaseTest;
import com.topdraw.business.basicdata.rights.history.domain.RightsHistory;
import com.topdraw.business.module.rights.history.domain.RightsHistory;
import com.topdraw.business.process.rest.RightsOperationController;
import com.topdraw.common.ResultInfo;
import com.topdraw.util.TimestampUtil;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.topdraw.test.business.process.rest;
import com.alibaba.fastjson.JSON;
import com.topdraw.business.basicdata.points.service.dto.PointsQueryCriteria;
import com.topdraw.business.process.rest.TaskOperationController;
import com.topdraw.business.process.rest.TaskOperationQueryCriteria;
import com.topdraw.module.mq.DataSyncMsg;
import com.topdraw.module.mq.EntityType;
import com.topdraw.module.mq.EventType;
import com.topdraw.BaseTest;
import com.topdraw.utils.StringUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import javax.annotation.Resource;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.FutureTask;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TaskOperationControllerTest extends BaseTest {
......
package com.topdraw.test.business.process.service;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.business.basicdata.member.domain.Member;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.BaseTest;
import com.topdraw.util.IdWorker;
......
package com.topdraw.test.business.process.service;
import com.alibaba.fastjson.JSON;
import com.topdraw.BaseTest;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
import com.topdraw.business.process.service.UserOperationService;
import com.topdraw.module.mq.DataSyncMsg;
import com.topdraw.module.mq.EventType;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class UserOperationServiceTest extends BaseTest {
@Autowired
UserOperationService taskOperationService;
@Test
public void appletLogin() {
/* Long memberId = 3L;
DataSyncMsg dataSyncMsg = new DataSyncMsg();
// dataSyncMsg.setEntityType(EntityType.MEMBER);
dataSyncMsg.setEventType(EventType.LOGIN.name());
DataSyncMsg.MsgData msgData = new DataSyncMsg.MsgData();
msgData.setEvent(1);
msgData.setRemarks("remark");
msgData.setMemberId(memberId);
msgData.setDeviceType(2);
msgData.setAppCode("WEI_XIN_GOLD_PANDA");
dataSyncMsg.setMsg(msgData);
String s = JSON.toJSONString(dataSyncMsg);*/
WeiXinUserBean weiXinUserBean = new WeiXinUserBean();
weiXinUserBean.setWxAppid("1");
weiXinUserBean.setWxCode("1");
weiXinUserBean.setSourceType("1");
weiXinUserBean.setSourceId("1");
weiXinUserBean.setIv("1");
weiXinUserBean.setEncryptedData("1");
weiXinUserBean.setSourceEntity("1");
weiXinUserBean.setSourceDesc("1");
weiXinUserBean.setSourceUser(1L);
weiXinUserBean.setUserInfo("1");
this.taskOperationService.appletLogin(weiXinUserBean);
}
}