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

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

parent 55d1ce1f
...@@ -37,9 +37,6 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter { ...@@ -37,9 +37,6 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter {
if (annotation == null) { if (annotation == null) {
annotation = handlerMethod.getMethodAnnotation(IgnoreUserToken.class); annotation = handlerMethod.getMethodAnnotation(IgnoreUserToken.class);
} }
if (annotation != null) {
return super.preHandle(request, response, handler);
}
String token = request.getHeader(userAuthConfig.getTokenHeader()); String token = request.getHeader(userAuthConfig.getTokenHeader());
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {
if (request.getCookies() != null) { if (request.getCookies() != null) {
...@@ -50,7 +47,16 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter { ...@@ -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.setUsername(infoFromToken.getUniqueName());
BaseContextHandler.setName(infoFromToken.getName()); BaseContextHandler.setName(infoFromToken.getName());
BaseContextHandler.setUserID(infoFromToken.getId()); BaseContextHandler.setUserID(infoFromToken.getId());
......
...@@ -187,6 +187,10 @@ ...@@ -187,6 +187,10 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-amqp</artifactId>
</dependency>
</dependencies> </dependencies>
......
...@@ -59,10 +59,13 @@ public abstract class BaseBiz<M extends Mapper<T>, T> { ...@@ -59,10 +59,13 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
public void insertSelective(T entity) { public void insertSelective(T entity) {
EntityUtils.setCreatAndUpdatInfo(entity); insertSelectiveRe(entity);
mapper.insertSelective(entity);
} }
public int insertSelectiveRe(T entity) {
EntityUtils.setCreatAndUpdatInfo(entity);
return mapper.insertSelective(entity);
}
public void delete(T entity) { public void delete(T entity) {
mapper.delete(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; ...@@ -6,6 +6,7 @@ package com.github.wxiaoqi.security.common.constant;
public class CommonConstants { public class CommonConstants {
public static final Integer SYS_TRUE = 1; public static final Integer SYS_TRUE = 1;
public static final Integer SYS_FALSE = 0; public static final Integer SYS_FALSE = 0;
public static final Integer SYS_ZREO = 0;
public static final Integer SYS_JSON_TRUE = 200; public static final Integer SYS_JSON_TRUE = 200;
public final static String RESOURCE_TYPE_MENU = "menu"; public final static String RESOURCE_TYPE_MENU = "menu";
public final static String RESOURCE_TYPE_BTN = "button"; 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; ...@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.admin.handler;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.biz.AppUserSellingWaterBiz; 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 com.github.wxiaoqi.security.admin.dto.OrderWaterDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
...@@ -15,7 +16,7 @@ public class IntegralMQHandler { ...@@ -15,7 +16,7 @@ public class IntegralMQHandler {
@Autowired @Autowired
AppUserSellingWaterBiz waterBiz; AppUserSellingWaterBiz waterBiz;
@RabbitListener(queues = "orderWater_queue") @RabbitListener(queues = RabbitAdminConfig.ORDER_WATER_QUEUE)
public void integralHandler(String json) { public void integralHandler(String json) {
log.info("接收到的消息:json = {}", json); log.info("接收到的消息:json = {}", json);
try{ try{
......
...@@ -15,6 +15,7 @@ import com.github.wxiaoqi.security.admin.vo.AppUserVo; ...@@ -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.admin.vo.ImiVo;
import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo; import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo;
import com.github.wxiaoqi.security.api.vo.user.AppUserInfo; 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.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.EmojiFilter; import com.github.wxiaoqi.security.common.util.EmojiFilter;
...@@ -26,6 +27,7 @@ import com.github.wxiaoqi.security.common.util.result.JsonResultUtil; ...@@ -26,6 +27,7 @@ import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.im.feign.ImFeign; import com.xxfc.platform.im.feign.ImFeign;
import com.xxfc.platform.universal.dto.RegionDTO; 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.RegionFeign;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -63,6 +65,9 @@ public class AppPermissionService { ...@@ -63,6 +65,9 @@ public class AppPermissionService {
@Autowired @Autowired
ThirdFeign thirdFeign; ThirdFeign thirdFeign;
@Autowired
MQSerderFeign mqSerderFeign;
@Autowired @Autowired
ImFeign imFeign; ImFeign imFeign;
...@@ -301,6 +306,10 @@ public class AppPermissionService { ...@@ -301,6 +306,10 @@ public class AppPermissionService {
data.put("imUserId", imUserId); data.put("imUserId", imUserId);
} }
if (data != null) { if (data != null) {
// try {
// //注册成功,发送队列
// mqSerderFeign.sendMessage(RabbitConstant.ADMIN_TOPIC, )
// }
return JsonResultUtil.createSuccessResultWithObj(data); return JsonResultUtil.createSuccessResultWithObj(data);
} else { } else {
return JsonResultUtil.createDefaultFail(); return JsonResultUtil.createDefaultFail();
......
...@@ -10,7 +10,7 @@ spring: ...@@ -10,7 +10,7 @@ spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver 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 username: root
password: sslcloud123*() password: sslcloud123*()
jackson: jackson:
......
#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F #\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F
#\u5305\u540D #\u5305\u540D
package=com.xxfc.platform.app package=com.xxfc.platform.activity
#\u4F5C\u8005 #\u4F5C\u8005
author=zjw author=zjw
#Email #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; ...@@ -3,6 +3,10 @@ package com.xxfc.platform.activity.entity;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import javax.persistence.*; 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 io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -76,5 +80,26 @@ public class ActivityPopularize implements Serializable { ...@@ -76,5 +80,26 @@ public class ActivityPopularize implements Serializable {
@ApiModelProperty(value = "推广活动类型 1--进度任务型") @ApiModelProperty(value = "推广活动类型 1--进度任务型")
private Integer type; 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 { ...@@ -53,7 +53,7 @@ public class ActivityPopularizeItem implements Serializable {
*/ */
@Column(name = "descr") @Column(name = "descr")
@ApiModelProperty(value = "描述、详情等(看情况使用)") @ApiModelProperty(value = "描述、详情等(看情况使用)")
private Integer descr; private String descr;
/** /**
* 推广活动id * 推广活动id
...@@ -70,11 +70,23 @@ public class ActivityPopularizeItem implements Serializable { ...@@ -70,11 +70,23 @@ public class ActivityPopularizeItem implements Serializable {
private Integer progress; private Integer progress;
/** /**
* * 1--领取任务;2--分享;3--推荐个数
*/ */
@Column(name = "type") @Column(name = "type")
@ApiModelProperty(value = "") @ApiModelProperty(value = "1--领取任务;2--分享;3--推荐个数")
private Integer type; 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 { ...@@ -77,4 +77,11 @@ public class ActivityPopularizeLog implements Serializable {
private Integer itemId; 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 { ...@@ -83,5 +83,12 @@ public class ActivityPopularizeUser implements Serializable {
@ApiModelProperty(value = "已经完成了的项") @ApiModelProperty(value = "已经完成了的项")
private String finishItem; 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; ...@@ -19,7 +19,8 @@ import tk.mybatis.spring.annotation.MapperScan;
*/ */
@SpringBootApplication(scanBasePackages = { @SpringBootApplication(scanBasePackages = {
"com.xxfc.platform", "com.xxfc.platform",
"com.github.wxiaoqi", "com.github.wxiaoqi.security.common.handler",
"com.github.wxiaoqi.security.common.log"
}) })
@EnableDiscoveryClient @EnableDiscoveryClient
@EnableScheduling @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; 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 org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityPopularizeUser; import com.xxfc.platform.activity.entity.ActivityPopularizeUser;
...@@ -15,4 +17,11 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz; ...@@ -15,4 +17,11 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
*/ */
@Service @Service
public class ActivityPopularizeUserBiz extends BaseBiz<ActivityPopularizeUserMapper,ActivityPopularizeUser> { 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.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/** /**
* rabbitmq配置类 * rabbitmq配置类
* 包含: 不知道什么orderWater队列 * 包含: 不知道什么orderWater队列
...@@ -14,10 +14,10 @@ import java.util.Map; ...@@ -14,10 +14,10 @@ import java.util.Map;
* @date 2019/7/15 * @date 2019/7/15
*/ */
@Configuration @Configuration
public class RabbitConfig { public class RabbitUserConfig {
public static final String HZ_EXC = "hz_exchange"; public static final String BASE_EXC = "hz_exchange";
public static final String ORDER_WATER_QUEUE = "orderWater_queue"; public static final String INTEGRAL_QUEUE = "integral_queue";
public static final String ORDER_WATER_KEY = "order"; public static final String ORDER_WATER_KEY = "order";
/** /**
...@@ -27,7 +27,7 @@ public class RabbitConfig { ...@@ -27,7 +27,7 @@ public class RabbitConfig {
*/ */
@Bean @Bean
public DirectExchange directExchange(){ public DirectExchange directExchange(){
return new DirectExchange(HZ_EXC, true, false); return new DirectExchange(BASE_EXC, true, false);
} }
/** /**
...@@ -36,7 +36,7 @@ public class RabbitConfig { ...@@ -36,7 +36,7 @@ public class RabbitConfig {
*/ */
@Bean @Bean
public Queue orderWaterQueue(){ 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; 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.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityPopularizeBiz; import com.github.wxiaoqi.security.common.util.XxBizAssert;
import com.xxfc.platform.activity.entity.ActivityPopularize; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import org.springframework.stereotype.Controller; import com.xxfc.platform.activity.biz.*;
import org.springframework.web.bind.annotation.RequestMapping; import com.xxfc.platform.activity.dto.ItemAddDTO;
import org.springframework.web.bind.annotation.RestController; 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 @RestController
@RequestMapping("activityPopularize") @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 { ...@@ -46,7 +46,8 @@ public class WebConfiguration implements WebMvcConfigurer {
private ArrayList<String> getIncludePathPatterns() { private ArrayList<String> getIncludePathPatterns() {
ArrayList<String> list = new ArrayList<>(); ArrayList<String> list = new ArrayList<>();
String[] urls = { String[] urls = {
"/cofig/**" "/cofig/**",
"/buyVehicleForm/**"
}; };
Collections.addAll(list, urls); Collections.addAll(list, urls);
return list; return list;
......
...@@ -29,7 +29,7 @@ public class BuyVehicleFormController extends BaseController<BuyVehicleFormBiz,B ...@@ -29,7 +29,7 @@ public class BuyVehicleFormController extends BaseController<BuyVehicleFormBiz,B
@RequestMapping(value = "form-add",method = RequestMethod.POST) @RequestMapping(value = "form-add",method = RequestMethod.POST)
@IgnoreClientToken @IgnoreClientToken
@ResponseBody @ResponseBody
public ObjectRestResponse<BuyVehicleForm> formAdd(@RequestBody BuyVehicleForm entity){ public ObjectRestResponse formAdd(@RequestBody BuyVehicleForm entity){
checkAppUser(); checkAppUser();
entity.setUserId(getAppUser().getUserid()); entity.setUserId(getAppUser().getUserid());
baseBiz.insertSelective(entity); baseBiz.insertSelective(entity);
......
...@@ -64,11 +64,9 @@ public interface ThirdFeign { ...@@ -64,11 +64,9 @@ public interface ThirdFeign {
/***************************************** 数据字典 ********************************************/ /***************************************** 数据字典 ********************************************/
// @GetMapping(value = "/dictionary/getParents")
@RequestMapping(value = "/dictionary/getParents", method = RequestMethod.GET) @RequestMapping(value = "/dictionary/getParents", method = RequestMethod.GET)
public ObjectRestResponse<List<Dictionary>> dictionaryGetParent(@RequestParam(value = "type") String type); public ObjectRestResponse<List<Dictionary>> dictionaryGetParent(@RequestParam(value = "type") String type);
// @GetMapping(value = "/dictionary/get")
@RequestMapping(value = "/dictionary/get", method = RequestMethod.GET) @RequestMapping(value = "/dictionary/get", method = RequestMethod.GET)
public ObjectRestResponse<List<Dictionary>> dictionaryGet(@RequestParam(value = "dictionary") Map<String, Object> dictionary); 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