Commit afa25d4d authored by 周健威's avatar 周健威

编写活动接口,添加公用rabbitmq配置

parent 55d1ce1f
......@@ -37,9 +37,6 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter {
if (annotation == null) {
annotation = handlerMethod.getMethodAnnotation(IgnoreUserToken.class);
}
if (annotation != null) {
return super.preHandle(request, response, handler);
}
String token = request.getHeader(userAuthConfig.getTokenHeader());
if (StringUtils.isEmpty(token)) {
if (request.getCookies() != null) {
......@@ -50,7 +47,16 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter {
}
}
}
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(token);
IJWTInfo infoFromToken = null;
try {
infoFromToken = userAuthUtil.getInfoFromToken(token);
}catch (Exception e){
if (annotation != null) {
return super.preHandle(request, response, handler);
}else {
throw e;
}
}
BaseContextHandler.setUsername(infoFromToken.getUniqueName());
BaseContextHandler.setName(infoFromToken.getName());
BaseContextHandler.setUserID(infoFromToken.getId());
......
......@@ -187,6 +187,10 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-amqp</artifactId>
</dependency>
</dependencies>
......
......@@ -59,10 +59,13 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
public void insertSelective(T entity) {
EntityUtils.setCreatAndUpdatInfo(entity);
mapper.insertSelective(entity);
insertSelectiveRe(entity);
}
public int insertSelectiveRe(T entity) {
EntityUtils.setCreatAndUpdatInfo(entity);
return mapper.insertSelective(entity);
}
public void delete(T entity) {
mapper.delete(entity);
......
package com.github.wxiaoqi.security.common.config;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.common.config.rabbit.BindDTO;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* rabbitmq配置类
* 包含: 不知道什么orderWater队列
* @author zhoujw
* @date 2019/7/15
*/
public abstract class RabbitCommonConfig {
@Autowired
ConfigurableApplicationContext applicationContext;
public static List<BindDTO> myQueue;
public <T> T registerBean(String name, Class<T> clazz, Object... args) {
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz);
if (args.length > 0) {
for (Object arg : args) {
beanDefinitionBuilder.addConstructorArgValue(arg);
}
}
BeanDefinition beanDefinition = beanDefinitionBuilder.getRawBeanDefinition();
BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) applicationContext.getBeanFactory();
beanFactory.registerBeanDefinition(name, beanDefinition);
return applicationContext.getBean(name, clazz);
}
@Bean
public void registerQueueWithBind() {
if(null != RabbitConstant.exchangeTopicSet) {
RabbitConstant.exchangeTopicSet.forEach(k -> {
registerBean(StrUtil.toCamelCase(k), TopicExchange.class, k, true, false);
});
}
if(null != myQueue) {
myQueue.forEach(en -> {
registerBean(StrUtil.toCamelCase(en.getQueue()), Queue.class, en.getQueue(), Boolean.TRUE);
registerBean(StrUtil.toCamelCase(en.getQueue())+ "Binding", Binding.class, en.getQueue(), Binding.DestinationType.QUEUE, en.getExchange(), en.getKey(), Collections.EMPTY_MAP);
});
}
}
}
package com.github.wxiaoqi.security.common.config.rabbit;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class BindDTO {
String queue;
String exchange;
String key;
}
package com.github.wxiaoqi.security.common.config.rabbit;
import java.util.HashSet;
import java.util.Set;
public class RabbitConstant {
public static Set<String> exchangeTopicSet;
public static Set<String> exchangeDirectSet;
public static String TOPIC_EXC = "_topic_exchange";
public static String DIRECT_EXC = "_direct_exchange";
public static final String ADMIN = "admin";
public static final String ADMIN_TOPIC = ADMIN+ TOPIC_EXC;
public static final String ORDER = "order";
public static final String ORDER_TOPIC = ORDER+ TOPIC_EXC;
/**************************key*********************************/
public static final String
static {
exchangeTopicSet = new HashSet<String>() {{
add(ADMIN_TOPIC);
add(ORDER_TOPIC);
}};
}
}
......@@ -6,6 +6,7 @@ package com.github.wxiaoqi.security.common.constant;
public class CommonConstants {
public static final Integer SYS_TRUE = 1;
public static final Integer SYS_FALSE = 0;
public static final Integer SYS_ZREO = 0;
public static final Integer SYS_JSON_TRUE = 200;
public final static String RESOURCE_TYPE_MENU = "menu";
public final static String RESOURCE_TYPE_BTN = "button";
......
package com.github.wxiaoqi.security.common.util;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import java.util.HashSet;
public class XxBizAssert {
public static <T> T notNull(T object) throws IllegalArgumentException {
return notNull(object, "[Assertion failed] - this argument is required; it must not be null");
}
public static <T> T notNull(T object, String errorMsgTemplate, Object... params) throws IllegalArgumentException {
if (object == null) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, new HashSet<String>(){{
add(StrUtil.format(errorMsgTemplate, params));
}});
} else {
return object;
}
}
public static void isNull(Object object, String errorMsgTemplate, Object... params) throws IllegalArgumentException {
if (object != null) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, new HashSet<String>(){{
add(StrUtil.format(errorMsgTemplate, params));
}});
}
}
public static void isNull(Object object) throws IllegalArgumentException {
isNull(object, "[Assertion failed] - the object argument must be null");
}
}
package com.github.wxiaoqi.security.admin.dto;
import lombok.Data;
@Data
public class RegisterParamDTO {
String username;
String password;
String headimgurl;
String nickname;
String mobilecode;
String openId;
String unionid;
Integer type;
String code;
}
package com.github.wxiaoqi.security.admin.dto;
import lombok.Data;
@Data
public class RegisterQueueDTO {
RegisterParamDTO registerParamDTO;
}
package com.github.wxiaoqi.security.admin.config;
import com.github.wxiaoqi.security.common.config.RabbitCommonConfig;
import com.github.wxiaoqi.security.common.config.rabbit.BindDTO;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* rabbitmq配置类
* 包含: 不知道什么orderWater队列
* @author zhoujw
* @date 2019/7/15
*/
@Configuration
public class RabbitAdminConfig extends RabbitCommonConfig {
public static final String ORDER_WATER_QUEUE = "order.water.queue";
static {
myQueue = new ArrayList<BindDTO>(){{
add(new BindDTO(ORDER_WATER_QUEUE, RabbitConstant.ADMIN_TOPIC, "order.#"));
}};
}
}
......@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.admin.handler;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.biz.AppUserSellingWaterBiz;
import com.github.wxiaoqi.security.admin.config.RabbitAdminConfig;
import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
......@@ -15,7 +16,7 @@ public class IntegralMQHandler {
@Autowired
AppUserSellingWaterBiz waterBiz;
@RabbitListener(queues = "orderWater_queue")
@RabbitListener(queues = RabbitAdminConfig.ORDER_WATER_QUEUE)
public void integralHandler(String json) {
log.info("接收到的消息:json = {}", json);
try{
......
......@@ -15,6 +15,7 @@ import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.admin.vo.ImiVo;
import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo;
import com.github.wxiaoqi.security.api.vo.user.AppUserInfo;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.EmojiFilter;
......@@ -26,6 +27,7 @@ import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.im.feign.ImFeign;
import com.xxfc.platform.universal.dto.RegionDTO;
import com.xxfc.platform.universal.feign.MQSerderFeign;
import com.xxfc.platform.universal.feign.RegionFeign;
import com.xxfc.platform.universal.feign.ThirdFeign;
import lombok.extern.slf4j.Slf4j;
......@@ -63,6 +65,9 @@ public class AppPermissionService {
@Autowired
ThirdFeign thirdFeign;
@Autowired
MQSerderFeign mqSerderFeign;
@Autowired
ImFeign imFeign;
......@@ -301,6 +306,10 @@ public class AppPermissionService {
data.put("imUserId", imUserId);
}
if (data != null) {
// try {
// //注册成功,发送队列
// mqSerderFeign.sendMessage(RabbitConstant.ADMIN_TOPIC, )
// }
return JsonResultUtil.createSuccessResultWithObj(data);
} else {
return JsonResultUtil.createDefaultFail();
......
......@@ -10,7 +10,7 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://10.5.52.3:3306/xxfc_app?useUnicode=true&characterEncoding=UTF-8
url: jdbc:mysql://10.5.52.3:3306/xxfc_activity?useUnicode=true&characterEncoding=UTF-8
username: root
password: sslcloud123*()
jackson:
......
#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F
#\u5305\u540D
package=com.xxfc.platform.app
package=com.xxfc.platform.activity
#\u4F5C\u8005
author=zjw
#Email
......
package com.xxfc.platform.activity.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ItemAddDTO{
@ApiModelProperty("活动id")
Integer popularizeId;
@ApiModelProperty("任务id")
Integer itemId;
}
\ No newline at end of file
......@@ -3,6 +3,10 @@ package com.xxfc.platform.activity.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -76,5 +80,26 @@ public class ActivityPopularize implements Serializable {
@ApiModelProperty(value = "推广活动类型 1--进度任务型")
private Integer type;
/**
* 标记编号 前两位为类型 如 1==01 ;后两位为区分每次活动的编号
*/
@Column(name = "code")
@ApiModelProperty(value = "标记编号 前两位为类型 如 1==01 ;后两位为区分每次活动的编号")
private String code;
/**
* 活动开始时间
*/
@Column(name = "start_time")
@ApiModelProperty(value = "活动结束时间")
@JSONField(serializeUsing= ToStringSerializer.class)
private Long startTime;
/**
* 活动开始时间
*/
@Column(name = "end_time")
@ApiModelProperty(value = "活动结束时间")
@JSONField(serializeUsing= ToStringSerializer.class)
private Long endTime;
}
......@@ -53,7 +53,7 @@ public class ActivityPopularizeItem implements Serializable {
*/
@Column(name = "descr")
@ApiModelProperty(value = "描述、详情等(看情况使用)")
private Integer descr;
private String descr;
/**
* 推广活动id
......@@ -70,11 +70,23 @@ public class ActivityPopularizeItem implements Serializable {
private Integer progress;
/**
*
* 1--领取任务;2--分享;3--推荐个数
*/
@Column(name = "type")
@ApiModelProperty(value = "")
@ApiModelProperty(value = "1--领取任务;2--分享;3--推荐个数")
private Integer type;
/**
* 排序
*/
@Column(name = "sort")
@ApiModelProperty(value = "排序")
private Integer sort;
/**
* 详情内容,用于存储对应任务的一些值
*/
@Column(name = "detail")
@ApiModelProperty(value = "详情内容,用于存储对应任务的一些值")
private String detail;
}
......@@ -77,4 +77,11 @@ public class ActivityPopularizeLog implements Serializable {
private Integer itemId;
/**
* 推广活动项id
*/
@Column(name = "status")
@ApiModelProperty(value = "状态 0--未完成;1--完成;-1--失败")
private Integer status;
}
package com.xxfc.platform.activity.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 活动的参与者关系表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-17 19:51:17
*/
@Data
@Table(name = "activity_popularize_relation")
public class ActivityPopularizeRelation implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 主用户
*/
@Column(name = "major_user_id")
@ApiModelProperty(value = "主用户")
private Integer majorUserId;
/**
* 次要用户
*/
@Column(name = "minor_user_id")
@ApiModelProperty(value = "次要用户")
private Integer minorUserId;
/**
* 活动id
*/
@Column(name = "popularize_id")
@ApiModelProperty(value = "活动id")
private Integer popularizeId;
}
......@@ -83,5 +83,12 @@ public class ActivityPopularizeUser implements Serializable {
@ApiModelProperty(value = "已经完成了的项")
private String finishItem;
/**
* 参与的用户的id
*/
@Column(name = "user_id")
@ApiModelProperty(value = "参与的用户的id")
private Integer userId;
}
package com.xxfc.platform.activity.vo.popularize;
import com.xxfc.platform.activity.entity.ActivityPopularize;
import com.xxfc.platform.activity.entity.ActivityPopularizeItem;
import com.xxfc.platform.activity.entity.ActivityPopularizeLog;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.awt.event.ItemEvent;
import java.util.List;
@Data
public class ItemVO extends ActivityPopularizeItem {
/**
* 推广活动项id
*/
@ApiModelProperty(value = "状态 0--未完成;1--完成;-1--失败")
private Integer status;
}
package com.xxfc.platform.activity.vo.popularize;
import com.xxfc.platform.activity.entity.ActivityPopularize;
import com.xxfc.platform.activity.entity.ActivityPopularizeItem;
import lombok.Data;
import java.util.List;
@Data
public class PopularizeVO extends ActivityPopularize {
List<ItemVO> items;
List<UserVO> userVOs;
}
package com.xxfc.platform.activity.vo.popularize;
import com.xxfc.platform.activity.entity.ActivityPopularizeItem;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserVO {
/**
* 推广活动项id
*/
@ApiModelProperty(value = "昵称")
private String nickname;
/**
* 头像
*/
@ApiModelProperty(value = "头像")
private String headimgurl;
}
......@@ -19,7 +19,8 @@ import tk.mybatis.spring.annotation.MapperScan;
*/
@SpringBootApplication(scanBasePackages = {
"com.xxfc.platform",
"com.github.wxiaoqi",
"com.github.wxiaoqi.security.common.handler",
"com.github.wxiaoqi.security.common.log"
})
@EnableDiscoveryClient
@EnableScheduling
......
package com.xxfc.platform.activity.biz;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import com.xxfc.platform.activity.mapper.ActivityPopularizeRelationMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
* 活动的参与者关系表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-17 19:51:17
*/
@Service
public class ActivityPopularizeRelationBiz extends BaseBiz<ActivityPopularizeRelationMapper,ActivityPopularizeRelation> {
}
\ No newline at end of file
package com.xxfc.platform.activity.biz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityPopularizeUser;
......@@ -15,4 +17,11 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
*/
@Service
public class ActivityPopularizeUserBiz extends BaseBiz<ActivityPopularizeUserMapper,ActivityPopularizeUser> {
public ActivityPopularizeUser insertSelectiveReT(ActivityPopularizeUser entity) {
if(insertSelectiveRe(entity) > 0) {
return selectById(entity.getId());
}else {
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
}
}
}
\ No newline at end of file
package com.xxfc.platform.activity.config;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* rabbitmq配置类
* 包含: 不知道什么orderWater队列
* @author zhoujw
* @date 2019/7/15
*/
@Configuration
public class RabbitConfig {
public static final String HZ_EXC = "hz_exchange";
public static final String INTEGRAL_QUEUE = "integral_queue";
public static final String ORDER_WATER_KEY = "order";
// /**
// * 队列交换机
// * 注意这里的交换机类型:CustomExchange
// * @return
// */
// @Bean
// public DirectExchange directExchange(){
// return new DirectExchange(HZ_EXC, true, false);
// }
/**
* 队列
* @return
*/
@Bean
public Queue orderWaterQueue(){
return new Queue(INTEGRAL_QUEUE,true);
}
// /**
// * 队列绑定交换机
// * @return
// */
// @Bean
// public Binding orderWaterBinding(Queue orderWaterQueue, DirectExchange directExchange){
// return BindingBuilder.bind(orderWaterQueue).to(directExchange).with(ORDER_WATER_KEY);
// }
}
package com.github.wxiaoqi.security.admin.config;
package com.xxfc.platform.activity.config;
import org.springframework.amqp.core.*;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* rabbitmq配置类
* 包含: 不知道什么orderWater队列
......@@ -14,10 +14,10 @@ import java.util.Map;
* @date 2019/7/15
*/
@Configuration
public class RabbitConfig {
public class RabbitUserConfig {
public static final String HZ_EXC = "hz_exchange";
public static final String ORDER_WATER_QUEUE = "orderWater_queue";
public static final String BASE_EXC = "hz_exchange";
public static final String INTEGRAL_QUEUE = "integral_queue";
public static final String ORDER_WATER_KEY = "order";
/**
......@@ -27,7 +27,7 @@ public class RabbitConfig {
*/
@Bean
public DirectExchange directExchange(){
return new DirectExchange(HZ_EXC, true, false);
return new DirectExchange(BASE_EXC, true, false);
}
/**
......@@ -36,7 +36,7 @@ public class RabbitConfig {
*/
@Bean
public Queue orderWaterQueue(){
return new Queue(ORDER_WATER_QUEUE,true);
return new Queue(INTEGRAL_QUEUE,true);
}
/**
......
package com.xxfc.platform.activity.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* @Description : swagger配置配置
* @Author : Mars
* @Date : 2017年9月6日
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${server.port}")
String port;
/**
* Every Docket bean is picked up by the swagger-mvc framework - allowing for multiple
* swagger groups i.e. same code base multiple swagger resource listings.
*/
@Bean
public Docket customDocket(){
List<Parameter> pars = new ArrayList<Parameter>();
ParameterBuilder ticketPar = new ParameterBuilder();
ticketPar.name("Authorization").description("user Authorization")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的ticket参数非必填,传空也可以
ParameterBuilder ticketPar2 = new ParameterBuilder();
ticketPar2.name("x-client-token").description("client Authorization")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的ticket参数非必填,传空也可以
pars.add(ticketPar.build()); //根据每个方法名也知道当前方法在设置什么参数
pars.add(ticketPar2.build());
return new Docket(DocumentationType.SWAGGER_2)
.host("10.1.37.248:8765/api/activity")
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxfc.platform.activity"))
//.apis(RequestHandlerSelectors.any())
.build()
.globalOperationParameters(pars)
.apiInfo(apiInfo());
}
ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("api swagger document")
.description("前后端联调swagger api 文档")
.version("2.1.5.5")
.build();
}
}
\ No newline at end of file
package com.xxfc.platform.activity.config;
import com.github.wxiaoqi.security.auth.client.interceptor.ServiceAuthRestInterceptor;
import com.github.wxiaoqi.security.auth.client.interceptor.UserAuthRestInterceptor;
import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
import com.github.wxiaoqi.security.common.interceptor.CorsInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.ArrayList;
import java.util.Collections;
@Configuration("orderWebConfig")
@Primary
public class WebConfiguration implements WebMvcConfigurer {
@Bean
GlobalExceptionHandler getGlobalExceptionHandler() {
return new GlobalExceptionHandler();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getCorsInterceptor()).addPathPatterns("/**");
registry.addInterceptor(getServiceAuthRestInterceptor()).
addPathPatterns(getIncludePathPatterns());
registry.addInterceptor(getUserAuthRestInterceptor()).
addPathPatterns(getIncludePathPatterns());
}
@Bean
ServiceAuthRestInterceptor getServiceAuthRestInterceptor() {
return new ServiceAuthRestInterceptor();
}
@Bean
CorsInterceptor getCorsInterceptor() {
return new CorsInterceptor();
}
@Bean
UserAuthRestInterceptor getUserAuthRestInterceptor() {
return new UserAuthRestInterceptor();
}
/**
* 需要用户和服务认证判断的路径
* @return
*/
private ArrayList<String> getIncludePathPatterns() {
ArrayList<String> list = new ArrayList<>();
String[] urls = {
"/activityPopularize/**"
};
Collections.addAll(list, urls);
return list;
}
}
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import tk.mybatis.mapper.common.Mapper;
/**
* 活动的参与者关系表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-17 19:51:17
*/
public interface ActivityPopularizeRelationMapper extends Mapper<ActivityPopularizeRelation> {
}
package com.xxfc.platform.activity.rest;
import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityPopularizeBiz;
import com.xxfc.platform.activity.entity.ActivityPopularize;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.wxiaoqi.security.common.util.XxBizAssert;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.biz.*;
import com.xxfc.platform.activity.dto.ItemAddDTO;
import com.xxfc.platform.activity.entity.*;
import com.xxfc.platform.activity.vo.popularize.ItemVO;
import com.xxfc.platform.activity.vo.popularize.PopularizeVO;
import com.xxfc.platform.activity.vo.popularize.UserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
@RestController
@RequestMapping("activityPopularize")
public class ActivityPopularizeController extends BaseController<ActivityPopularizeBiz,ActivityPopularize> {
@Api(value = "推广活动", tags = "推广活动")
public class ActivityPopularizeController extends BaseController<ActivityPopularizeBiz,ActivityPopularize> implements UserRestInterface {
@Autowired
ActivityPopularizeBiz popularizeBiz;
@Autowired
ActivityPopularizeItemBiz popularizeItemBiz;
@Autowired
ActivityPopularizeUserBiz popularizeUserBiz;
@Autowired
ActivityPopularizeLogBiz popularizeLogBiz;
@Autowired
ActivityPopularizeRelationBiz popularizeRelationBiz;
@Autowired
UserFeign userFeign;
@Override
public UserFeign getUserFeign() {
return userFeign;
}
@RequestMapping(value = "/app/unauth/popularize-list", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询活动")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse<PopularizeVO> popularizeList(String code, Integer type) {
AppUserDTO appUserDTO = getAppUser();
List<PopularizeVO> popularizeVOs = popularizeBiz.selectList(new ActivityPopularize(){{
setCode(code);
setType(type);
}}).stream().map(v -> {
PopularizeVO vo = BeanUtil.toBean(v, PopularizeVO.class);
vo.setUserVOs(new ArrayList<UserVO>(){{
add(new UserVO(){{setNickname("小A");setHeadimgurl("https://xxtest.upyuns.com/image/app/default_%20avatar.png");}});
add(new UserVO(){{setNickname("小B");setHeadimgurl("https://xxtest.upyuns.com/image/app/default_%20avatar.png");}});
}});
ActivityPopularizeUser[] apu = new ActivityPopularizeUser[1];
Map<Integer, ActivityPopularizeLog>[] aplMap = new HashMap[1];
if(null != appUserDTO) {
//获取用户和活动的关联信息
apu[0] = popularizeUserBiz.selectOne(new ActivityPopularizeUser(){{
setPopularizeId(v.getId());
setUserId(appUserDTO.getUserid());
}});
//获取日志
aplMap[0] = popularizeLogBiz.selectList(new ActivityPopularizeLog(){{
setPopularizeId(v.getId());
setUserId(appUserDTO.getUserid());
}}).parallelStream().collect(Collectors.toMap(ActivityPopularizeLog::getItemId, l -> l));
//设置用户列表
vo.setUserVOs(popularizeRelationBiz.selectList(new ActivityPopularizeRelation(){{
setMajorUserId(appUserDTO.getUserid());
setPopularizeId(v.getId());
}}).stream().map(pr -> {
UserVO userVO = BeanUtil.toBean(userFeign.userDetailById(pr.getMinorUserId()).getData(), UserVO.class);
return userVO;
}).collect(Collectors.toList()));
}
//设置任务项
vo.setItems(popularizeItemBiz.selectByExample(
new Example.Builder(ActivityPopularizeItem.class)
.where(WeekendSqls.<ActivityPopularizeItem>custom()
.andEqualTo(ActivityPopularizeItem::getPopularizeId, v.getId())).orderByAsc("sort").build())
.stream().map(item -> {
ItemVO itemVO = BeanUtil.toBean(item, ItemVO.class);
itemVO.setStatus(SYS_FALSE);
if(null != apu[0]) {
ActivityPopularizeLog log = aplMap[0].get(item.getId());
if(null != log && SYS_TRUE.equals(log.getStatus())) {
itemVO.setStatus(SYS_TRUE);
}
}
return itemVO;
}).collect(Collectors.toList()));
return vo;
}).collect(Collectors.toList());
if(popularizeVOs.size() > 0) {
return ObjectRestResponse.succ(popularizeVOs.get(0));
}else {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
}
@RequestMapping(value = "/item-add", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "完成任务")
@IgnoreClientToken
public ObjectRestResponse itemAdd(@RequestBody ItemAddDTO itemAddDTO) {
checkAppUser();
ActivityPopularize ap = popularizeBiz.selectById(itemAddDTO.getPopularizeId());
XxBizAssert.notNull(ap);
ActivityPopularizeItem item = popularizeItemBiz.selectById(itemAddDTO.getItemId());
XxBizAssert.notNull(item);
ActivityPopularizeUser activityPopularizeUser = popularizeUserBiz.selectOne(new ActivityPopularizeUser(){{
setUserId(getAppUser().getUserid());
setPopularizeId(itemAddDTO.getPopularizeId());
}});
//添加用户活动关系
if(null == activityPopularizeUser) {
activityPopularizeUser = popularizeUserBiz.insertSelectiveReT(new ActivityPopularizeUser(){{
setPopularizeId(itemAddDTO.getPopularizeId());
setUserId(getAppUser().getUserid());
setEndProgress(ap.getProgress());
}});
}
//判断是否已经添加过
ActivityPopularizeLog itemLog = BeanUtil.toBean(itemAddDTO, ActivityPopularizeLog.class);
itemLog.setUserId(getAppUser().getUserid());
XxBizAssert.isNull(popularizeLogBiz.selectOne(itemLog));
//添加活动日志
itemLog.setStatus(SYS_TRUE);
popularizeLogBiz.insertSelective(itemLog);
//更新用户活动进度
//查询 所有log
List<ActivityPopularizeLog> activityPopularizeLogs = popularizeLogBiz.selectList(new ActivityPopularizeLog(){{
setUserId(getAppUser().getUserid());
setPopularizeId(ap.getId());
setStatus(SYS_TRUE);
}});
Integer progress = 0;
String itemsContent;
for(ActivityPopularizeLog al : activityPopularizeLogs){
ActivityPopularizeItem item1 = popularizeItemBiz.selectById(al.getItemId());
progress += item1.getProgress();
}
activityPopularizeUser.setCurrentProgress(progress);
popularizeUserBiz.updateSelectiveById(activityPopularizeUser);
return ObjectRestResponse.succ();
}
@RequestMapping(value = "/app/unauth/relation-list", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询该活动邀请的好友")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse<PopularizeVO> relationList(String code) {
checkAppUser();
// ActivityPopularize activityPopularize = popularizeBiz.selectOne(new ActivityPopularize(){{
// setCode(code);
// }});
// activityPopularize.get
return ObjectRestResponse.succ();
}
}
\ No newline at end of file
package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityPopularizeRelationBiz;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("activityPopularizeRelation")
public class ActivityPopularizeRelationController extends BaseController<ActivityPopularizeRelationBiz,ActivityPopularizeRelation> {
}
\ No newline at end of file
......@@ -46,7 +46,8 @@ public class WebConfiguration implements WebMvcConfigurer {
private ArrayList<String> getIncludePathPatterns() {
ArrayList<String> list = new ArrayList<>();
String[] urls = {
"/cofig/**"
"/cofig/**",
"/buyVehicleForm/**"
};
Collections.addAll(list, urls);
return list;
......
......@@ -29,7 +29,7 @@ public class BuyVehicleFormController extends BaseController<BuyVehicleFormBiz,B
@RequestMapping(value = "form-add",method = RequestMethod.POST)
@IgnoreClientToken
@ResponseBody
public ObjectRestResponse<BuyVehicleForm> formAdd(@RequestBody BuyVehicleForm entity){
public ObjectRestResponse formAdd(@RequestBody BuyVehicleForm entity){
checkAppUser();
entity.setUserId(getAppUser().getUserid());
baseBiz.insertSelective(entity);
......
......@@ -64,11 +64,9 @@ public interface ThirdFeign {
/***************************************** 数据字典 ********************************************/
// @GetMapping(value = "/dictionary/getParents")
@RequestMapping(value = "/dictionary/getParents", method = RequestMethod.GET)
public ObjectRestResponse<List<Dictionary>> dictionaryGetParent(@RequestParam(value = "type") String type);
// @GetMapping(value = "/dictionary/get")
@RequestMapping(value = "/dictionary/get", method = RequestMethod.GET)
public ObjectRestResponse<List<Dictionary>> dictionaryGet(@RequestParam(value = "dictionary") Map<String, Object> dictionary);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment