Commit 9d8b272c authored by hezhen's avatar hezhen

Merge branch 'base-modify' of http://113.105.137.151:22280/youjj/cloud-platform into base-modify

parents 8e1e1242 3d0f7df5
......@@ -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());
......
......@@ -188,6 +188,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;
}
......@@ -181,7 +181,7 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
}
public AppUserLogin findUserByImiId(Integer imiId) {
Example example = new Example(AppUserLogin.class);
Example example = new Example(AppUserLogin.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("imUserid",imiId);
List<AppUserLogin> appUserLogins = mapper.selectByExample(example);
......
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;
......@@ -38,6 +40,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
......@@ -62,6 +65,9 @@ public class AppPermissionService {
@Autowired
ThirdFeign thirdFeign;
@Autowired
MQSerderFeign mqSerderFeign;
@Autowired
ImFeign imFeign;
......@@ -300,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
......
......@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.api.vo.config;
import feign.Logger;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
......@@ -30,7 +31,9 @@ public class HeaderConfig implements RequestInterceptor {
while (headerNames.hasMoreElements()){
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
template.header(headerName,headerValue);
if("Authorization".equals(headerName)) {
template.header(headerName,headerValue);
}
}
}
}
......
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;
......@@ -75,6 +79,27 @@ public class ActivityPopularize implements Serializable {
@Column(name = "type")
@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;
}
......@@ -75,6 +75,13 @@ public class ActivityPopularizeLog implements Serializable {
@Column(name = "item_id")
@ApiModelProperty(value = "推广活动项id ")
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;
}
......@@ -82,6 +82,13 @@ public class ActivityPopularizeUser implements Serializable {
@Column(name = "finish_item")
@ApiModelProperty(value = "已经完成了的项")
private String finishItem;
/**
* 参与的用户的id
*/
@Column(name = "user_id")
@ApiModelProperty(value = "参与的用户的id")
private Integer userId;
}
package com.xxfc.platform.activity.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -10,7 +9,6 @@ import javax.persistence.Table;
@Table(name = "integral_user_record")
@Data
@Builder
public class IntegralUserRecord {
/**
* 主键id
......
......@@ -26,6 +26,14 @@ public class IntegralUserRecordDto extends PageParam {
private Integer channelId;
public IntegralUserRecord getIntegralUserRecord() {
return IntegralUserRecord.builder().integralRuleCode(integralRuleCode).userId(userId).channelId(channelId).point(point).type(type).isdel(false).isValid(true).build();
IntegralUserRecord integralUserRecord = new IntegralUserRecord();
integralUserRecord.setPoint(point);
integralUserRecord.setIntegralRuleCode(integralRuleCode);
integralUserRecord.setChannelId(channelId);
integralUserRecord.setIsValid(true);
integralUserRecord.setIsdel(false);
integralUserRecord.setUserId(userId);
integralUserRecord.setType(type);
return integralUserRecord;
}
}
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;
}
......@@ -21,6 +21,7 @@
</dependencies>
<build>
<finalName>xx-activity</finalName>
<plugins>
<!-- 此插件用来生成通用mapper的代码 -->
<plugin>
......
......@@ -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.biz;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.constant.RestCode;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.entity.IntegralRule;
import com.xxfc.platform.activity.entity.IntegralSignRecord;
import com.xxfc.platform.activity.entity.IntegralUserRecord;
import com.xxfc.platform.activity.entity.IntegralUserTotal;
import com.xxfc.platform.activity.mapper.IntegralSignRecordMapper;
import com.xxfc.platform.activity.user.UserInfoBiz;
import com.xxfc.platform.activity.util.IntegralToolsUtils;
import com.xxfc.platform.activity.vo.IntegralRuleDto;
import com.xxfc.platform.activity.vo.IntegralUserRecordDto;
import com.xxfc.platform.activity.vo.IntegralUserTotalDto;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.joda.time.DateTime;
import org.joda.time.DateTimeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;
import java.util.List;
@Service
@Transactional
......@@ -114,7 +106,7 @@ public class IntegralSignRecordBiz extends BaseBiz<IntegralSignRecordMapper, Int
integralSignRecord.setLastTime(new Date().getTime());
mapper.updateByPrimaryKeySelective(integralSignRecord);
addPoint(objectRestResponse.getData(),integralSignRecord, appUserDTO, integralSignRecord.getSignDays());
return ObjectRestResponse.succ();
return ObjectRestResponse.succ(objectRestResponse.getData().getPoint());
}
return ObjectRestResponse.createFailedResult(1006,"签到次数已达到上限,请下次再来");
}
......
package com.xxfc.platform.activity.biz;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.constant.RestCode;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.github.wxiaoqi.security.common.vo.PageParam;
import com.xxfc.platform.activity.entity.IntegralRule;
import com.xxfc.platform.activity.entity.IntegralUserRecord;
import com.xxfc.platform.activity.entity.IntegralUserTotal;
......@@ -20,7 +18,6 @@ import com.xxfc.platform.activity.vo.IntegralUserTotalDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -144,6 +141,11 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
if (integralUserRecordDto == null) {
return ObjectRestResponse.paramIsEmpty();
}
AppUserDTO appUserDTO = userInfoBiz.getUserInfo();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
integralUserRecordDto.setUserId(appUserDTO.getUserid());
List<IntegralUserRecord> integralUserRecordList = mapper.selectByUserAndTime(integralUserRecordDto);
return ObjectRestResponse.succ(integralUserRecordList);
}
......
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,20 +14,20 @@ 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";
/**
* 队列交换机
* 注意这里的交换机类型:CustomExchange
* 注意这里的交换机类型:CustomExchange
* @return
*/
@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);
......
......@@ -7,7 +7,6 @@
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
package com.xxfc.service;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.campsite.CampSiteApplication;
import com.xxfc.platform.campsite.biz.CampsiteShopBiz;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminFindDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopTagDTO;
import com.xxfc.platform.campsite.vo.CampsiteShopAdminPageVo;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.time.Instant;
import java.util.Arrays;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/19 16:41
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = CampSiteApplication.class)
@Slf4j
public class CampsiteShopBizTest {
@Autowired
private CampsiteShopBiz campsiteShopBiz;
@Test
public void testList(){
CampsiteShopAdminFindDTO campsiteShopAdminFindDTO = new CampsiteShopAdminFindDTO();
campsiteShopAdminFindDTO.setName("kon");
Instant now = Instant.now();
long start = now.minusMillis(3 * 24 * 60 * 60 * 1000).toEpochMilli();
campsiteShopAdminFindDTO.setStartTime(start);
campsiteShopAdminFindDTO.setEndTime(now.toEpochMilli());
campsiteShopAdminFindDTO.setPage(1);
campsiteShopAdminFindDTO.setLimit(10);
PageDataVO<CampsiteShopAdminPageVo> campsiteShopPage = campsiteShopBiz.findCampsiteShopPage(campsiteShopAdminFindDTO);
System.out.println(campsiteShopPage.getData());
}
@Test
public void testSae(){
CampsiteShopAdminDTO campsiteShopAdminDTO = new CampsiteShopAdminDTO();
// campsiteShopAdminDTO.setId(13);
campsiteShopAdminDTO.setProvince(2323);
campsiteShopAdminDTO.setProvinceName("浙江省");
campsiteShopAdminDTO.setCity(2342342);
campsiteShopAdminDTO.setCityName("台州市");
campsiteShopAdminDTO.setAddress("胡同路23号");
campsiteShopAdminDTO.setConcat("zhangsan");
campsiteShopAdminDTO.setConfigure("dsaasdfasdfa");
campsiteShopAdminDTO.setContent("sadfasdfasdfasd");
campsiteShopAdminDTO.setHot(23);
campsiteShopAdminDTO.setLogo("https://xxtest.upyuns.com/image/admin/2019-06-13/23.png");
campsiteShopAdminDTO.setName("kong");
campsiteShopAdminDTO.setPhone("132121212121");
campsiteShopAdminDTO.setServicePhone("4545454545");
campsiteShopAdminDTO.setLatitude(39.983171);
campsiteShopAdminDTO.setLongitude(116.308479);
CampsiteShopCarouselDTO campsiteShopCarouselDTO = new CampsiteShopCarouselDTO();
//campsiteShopCarouselDTO.setId(12);
campsiteShopCarouselDTO.setImgUrl("https://xxtest.upyuns.com/image/admin/2019-06-13/23.png");
campsiteShopAdminDTO.setCarouselDTOS(Arrays.asList(campsiteShopCarouselDTO));
campsiteShopAdminDTO.setCampsiteTagDTOS(Arrays.asList(1));
System.out.println("保存的json信息:【{}】"+JSONObject.toJSONString(campsiteShopAdminDTO));
campsiteShopBiz.saveCampsiteShop(campsiteShopAdminDTO);
}
}
......@@ -57,6 +57,10 @@
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
......
......@@ -42,6 +42,7 @@
</dependencies>
<build>
<finalName>xx-im</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
......
......@@ -29,10 +29,6 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
* @return
*/
public ObjectRestResponse getList(QuestionParamDto questionParamDto) {
AppUserDTO appUserDTO = userBiz.getUserInfo();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
Query query = new Query(questionParamDto);
PageDataVO pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getQuestionList(query.getSuper()));
return new ObjectRestResponse<>().data(pageDataVO);
......
......@@ -6,6 +6,7 @@ import cn.hutool.core.bean.copier.CopyOptions;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.vo.ImiVo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.im.dto.CommentVo;
import com.xxfc.platform.im.dto.PraiseVo;
......@@ -44,9 +45,7 @@ public class MsgBiz {
public ObjectRestResponse getMsgList(Integer page, Integer limit, Integer type) throws Exception {
//获取所有朋友圈
AppUserDTO appUserDTO = userBiz.getUserInfo();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
log.info("获取消息列表: page = {}, limit = {}, type = {}", page, limit, type);
page = page == null ? 1 : page;
limit = limit == null ? 10 : limit;
......@@ -55,7 +54,12 @@ public class MsgBiz {
List<Msg> msgList = null;
if (type != null) {
query = new Query(Criteria.where("body.type").is(type));
msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid());
if (appUserDTO != null) {
msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid());
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo);
}
msgList = mongoTemplate.find(query, Msg.class, "s_msg");
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo);
} else {
......@@ -63,7 +67,8 @@ public class MsgBiz {
ids.add(2);
ids.add(4);
query = new Query(Criteria.where("body.type").in(ids));
msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid());
List<Msg> list = mongoTemplate.find(query, Msg.class, "s_msg");
msgList = fetchAndAttach(list, appUserDTO.getImUserid());
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo);
}
......@@ -89,14 +94,21 @@ public class MsgBiz {
//获取所有朋友圈
AppUserDTO appUserDTO = userBiz.getUserInfo();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
appUserDTO = new AppUserDTO();
}
if(id == null) {
return ObjectRestResponse.paramIsEmpty();
}
List<Msg> msgList = null;
Query query = new Query(Criteria.where("id").is(new ObjectId(id)));
List<Msg> msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid());
List<MsgVo> msgVoList = replaceMsgResult(msgList);
if (appUserDTO != null) {
msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid());
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo);
}
msgList = mongoTemplate.find(query, Msg.class, "s_msg");
List<MsgVo> msgVoList = replaceMsgResult(msgList);
if(msgVoList.size() > 0) {
return ObjectRestResponse.succ(msgVoList.get(0));
}
......@@ -111,9 +123,6 @@ public class MsgBiz {
* @return
*/
private List<Msg> fetchAndAttach(List<Msg> list, Integer userId) {
if (userId == null) {
return new ArrayList<>();
}
for (Msg msg : list) {
//添加评论
Query query = new Query(Criteria.where("msgId").is(msg.getId()));
......@@ -162,9 +171,12 @@ public class MsgBiz {
MsgVo msgVo = new MsgVo();
BeanUtil.copyProperties(msg, msgVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像
msgVo.setNickname("李晓雨");
msgVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png");
String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString());
ImiVo imiVo = userBiz.getUserInfo(msg.getUserId());
if(imiVo != null) {
msgVo.setNickname(imiVo.getNickname());
msgVo.setPicUrl(imiVo.getHeadimgurl());
}
String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString());
msgVo.setAddress(address);
msgVo.setMsgId(msg.getId().toString());
msgVoList.add(msgVo);
......@@ -178,8 +190,11 @@ public class MsgBiz {
PraiseVo praiseVo = new PraiseVo();
BeanUtil.copyProperties(praise, praiseVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像
praiseVo.setNickname("李晓雨");
praiseVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png");
ImiVo imiVo = userBiz.getUserInfo(praise.getUserId());
if(imiVo != null) {
praiseVo.setNickname(imiVo.getNickname());
praiseVo.setPicUrl(imiVo.getHeadimgurl());
}
praiseVoArrayList.add(praiseVo);
}
return praiseVoArrayList;
......@@ -191,8 +206,11 @@ public class MsgBiz {
CommentVo commentVo = new CommentVo();
BeanUtil.copyProperties(comment, commentVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像
commentVo.setNickname("李晓雨");
commentVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png");
ImiVo imiVo = userBiz.getUserInfo(comment.getUserId());
if(imiVo != null) {
commentVo.setNickname(imiVo.getNickname());
commentVo.setPicUrl(imiVo.getHeadimgurl());
}
commentVoList.add(commentVo);
}
return commentVoList;
......
......@@ -3,6 +3,7 @@ package com.xxfc.platform.im.biz;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.vo.ImiVo;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.xxfc.platform.im.model.User;
import lombok.extern.slf4j.Slf4j;
......@@ -203,4 +204,9 @@ public class UserBiz {
return null;
}
public ImiVo getUserInfo(Integer imId) {
ImiVo imiVo = userFeign.findUserInfoByImiId(imId);
return imiVo;
}
}
......@@ -18,7 +18,7 @@ public class ImCommentController {
@PostMapping(value = "/add")
@ApiOperation(value = "添加评论")
public ObjectRestResponse add(@RequestBody ImComment imComment) {
public ObjectRestResponse add( ImComment imComment) {
return imCommentBiz.add(imComment);
}
......
......@@ -18,7 +18,7 @@ public class ImPraiseController {
@PostMapping(value = "/add")
@ApiOperation(value = "添加点赞")
public ObjectRestResponse add(@RequestBody ImPraiseDto imPraise) {
public ObjectRestResponse add( ImPraiseDto imPraise) {
return imPraiseBiz.add(imPraise);
}
......
......@@ -10,6 +10,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.IntervalUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum;
......@@ -82,6 +83,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
@Autowired
UserFeign userFeign;
@Autowired
OrderMsgBiz orderMsgBiz;
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){
return mapper.pageByParm(paramMap);
}
......@@ -214,6 +218,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
//退款流程
rentRefundProcess(hasUpdateOrder, orvd.getDeposit(), timeLag, APP_ORDER+ "_"+ RENT_REFUND);
//已付款的取消订单发送消息
try {
AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData();
//处理后台用户提醒短信的发送
orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_CANCEL);
}catch (Exception e) {
log.error(e.getMessage(), e);
}
}else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
setOrderId(baseOrder.getId());
......@@ -252,7 +265,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
setOrderId(baseOrder.getId());
......@@ -460,51 +472,24 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
try {
this.updateSelectiveByIdRe(updateOrder);
}finally {
OrderTypeEnum orderTypeEnum = OrderTypeEnum.codeAndDesc.get(baseOrder.getType());
AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData();
Integer smstype;
List<String> smsParams = new ArrayList<String>();
smsParams.add(baseOrder.getRealAmount().toString());
switch (orderTypeEnum) {
case RENT_VEHICLE:
if(orvd.getFreeDays() > 0) {
smstype = SmsTemplateDTO.RENT_MEMENT;
smsParams.add(orvd.getFreeDays().toString());
smsParams.add(appUserDTO.getRentFreeDays().toString());
}else {
smstype = SmsTemplateDTO.RENT_NORMAL;
}
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(smstype);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
case TOUR:
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(SmsTemplateDTO.TOUR);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
case MEMBER:
smsParams.add(omd.getRentFreeNum().toString());
smsParams.add(appUserDTO.getRentFreeDays().toString());
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(SmsTemplateDTO.MEMENT);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
default:
break;
}
//处理App用户提醒短信的发送
//orderMsgBiz.handelAppUserMsg(orvd, omd, baseOrder, appUserDTO);
//处理后台用户提醒短信的发送
orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_PAY);
}
} else {
log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo);
}
}
/**
* 更新(不成功抛异常)
* @param baseOrder
* @return
*/
public BaseOrder updateSelectiveByIdReT(BaseOrder baseOrder) {
if(updateSelectiveByIdRe(baseOrder) > 0) {
return selectById(baseOrder.getId());
......
package com.xxfc.platform.order.biz.inner;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.universal.dto.SmsTemplateDTO;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
@Slf4j
@Service
public class OrderMsgBiz {
//客户通知
public static final int RENT_PAY = 1;
public static final int RENT_DELIVERY = 2;
public static final int RENT_CANCEL = 3;
@Autowired
UserFeign userFeign;
@Autowired
ThirdFeign thirdFeign;
@Autowired
VehicleFeign vehicleFeign;
/**
* 处理App用户提醒短信的发送
* @param orvd
* @param omd
* @param baseOrder
* @param appUserDTO
*/
public void handelAppUserMsg(OrderRentVehicleDetail orvd, OrderMemberDetail omd, BaseOrder baseOrder, AppUserDTO appUserDTO) {
try {
OrderTypeEnum orderTypeEnum = OrderTypeEnum.codeAndDesc.get(baseOrder.getType());
Integer smstype;
List<String> smsParams = new ArrayList<String>();
smsParams.add(baseOrder.getRealAmount().toString());
switch (orderTypeEnum) {
case RENT_VEHICLE:
if(orvd.getFreeDays() > 0) {
smstype = SmsTemplateDTO.RENT_MEMENT;
smsParams.add(orvd.getFreeDays().toString());
smsParams.add(appUserDTO.getRentFreeDays().toString());
}else {
smstype = SmsTemplateDTO.RENT_NORMAL;
}
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(smstype);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
case TOUR:
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(SmsTemplateDTO.TOUR);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
case MEMBER:
smsParams.add(omd.getRentFreeNum().toString());
smsParams.add(appUserDTO.getRentFreeDays().toString());
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(SmsTemplateDTO.MEMENT);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
default:
break;
}
}catch (Exception e) {
log.error(e.getMessage(), e);
}
}
/**
* 处理后台用户提醒短信的发送
* @param orvd
* @param baseOrder
* @param appUserDTO
*/
public void handelBgUserMsg4Pay(OrderRentVehicleDetail orvd, BaseOrder baseOrder, AppUserDTO appUserDTO, Integer handelType) {
try {
OrderTypeEnum orderTypeEnum = OrderTypeEnum.codeAndDesc.get(baseOrder.getType());
Integer smstype;
List<String> smsParams = new ArrayList<String>();
switch (orderTypeEnum) {
case RENT_VEHICLE:
switch (handelType) {
case RENT_PAY:
//如果公司相同
if(null != orvd.getStartCompanyId() && !SYS_FALSE.equals(orvd.getStartCompanyId())) {
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(orvd.getStartCompanyId()).getData();
if(orvd.getStartCompanyId().equals(orvd.getEndCompanyId())) {
smstype = SmsTemplateDTO.TAAKE_CAR;
}else {
smstype = SmsTemplateDTO.DIFFERENT_TAAKE_CAR;
}
handelSmsParam(orvd, baseOrder, smsParams, appUserDTO, RENT_PAY);
SmsTemplateDTO smsTemplateDTO = new SmsTemplateDTO(){{
setPhoneNumbers(companyDetail.getVehiceServicePhone());
setType(smstype);
setParams(smsParams.toArray(new String[smsParams.size()]));
}};
thirdFeign.sendTemplate(smsTemplateDTO);
}else {
log.error("通知后台客户短信异常,开始公司id 不存在或者为0 订单号:{}", baseOrder.getId());
}
break;
case RENT_DELIVERY:
//如果公司相同
if(null != orvd.getEndCompanyId() && !SYS_FALSE.equals(orvd.getEndCompanyId())) {
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(orvd.getEndCompanyId()).getData();
//不相同发送,相同不用发送
if(!orvd.getEndCompanyId().equals(orvd.getStartCompanyId())) {
handelSmsParam(orvd, baseOrder, smsParams, appUserDTO, RENT_DELIVERY);
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(companyDetail.getVehiceServicePhone());
setType(SmsTemplateDTO.ALSO_CAR);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
}
}else {
log.error("通知后台客户短信异常,结束公司id 不存在或者为0 订单号:{}", baseOrder.getId());
}
break;
case RENT_CANCEL:
if(null != orvd.getEndCompanyId() && !SYS_FALSE.equals(orvd.getEndCompanyId())) {
handelSmsParam(orvd, baseOrder, smsParams, appUserDTO, RENT_CANCEL);
CompanyDetail companyDetail2 = vehicleFeign.getCompanyDetail(orvd.getEndCompanyId()).getData();
SmsTemplateDTO smsTemplateDTO = new SmsTemplateDTO();
smsTemplateDTO.setPhoneNumbers(companyDetail2.getVehiceServicePhone());
smsTemplateDTO.setType(Integer.valueOf(SmsTemplateDTO.CANCEL));
List<String> smsParams2 = smsParams;
smsTemplateDTO.setParams(smsParams2.toArray(new String[smsParams2.size()]));
thirdFeign.sendTemplate(smsTemplateDTO);
}else {
log.error("通知后台客户短信异常,结束公司id 不存在或者为0 订单号:{}", baseOrder.getId());
}
break;
default:
break;
}
break;
default:
break;
}
}catch (Exception e) {
log.error(e.getMessage(), e);
}
}
private void handelSmsParam(OrderRentVehicleDetail orvd, BaseOrder baseOrder, List<String> smsParams, AppUserDTO appUserDTO, int handelType) {
if(RENT_DELIVERY == handelType) {
smsParams.add(appUserDTO.getRealname());
smsParams.add(DateUtil.formatDateTime(DateUtil.date(orvd.getEndTime())));
smsParams.add(orvd.getEndAddr());
smsParams.add(baseOrder.getName());
smsParams.add(appUserDTO.getUsername());
}else {
smsParams.add(appUserDTO.getRealname());
smsParams.add(baseOrder.getName());
smsParams.add(orvd.getStartAddr());
smsParams.add(orvd.getEndAddr());
smsParams.add(DateUtil.formatDateTime(DateUtil.date(orvd.getStartTime())));
smsParams.add(DateUtil.formatDateTime(DateUtil.date(orvd.getEndTime())));
smsParams.add(orvd.getDayNum().toString());
smsParams.add(appUserDTO.getUsername());
}
}
}
\ No newline at end of file
......@@ -22,9 +22,11 @@ import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -34,8 +36,10 @@ import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import static com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum.*;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
......@@ -83,6 +87,24 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
initDictionary();
VehicleModel vehicleModel = vehicleFeign.get(bo.getModelId()).getData();
bo.setVehicleModel(vehicleModel);
//根据还车城市设置还车公司id
if(SYS_FALSE.equals(bo.getEndCompanyId())) {
if(null != bo.getEndCity() && null != bo.getStartCity()) {
if(bo.getEndCity().equals(bo.getStartCity())) {
bo.setEndCompanyId(bo.getStartCompanyId());
}else {
//查询结束城市分公司
List<BranchCompany> companyDetails = vehicleFeign.branchCompanyEntityList(
BeanUtil.beanToMap(new BranchCompany(){{
setAddrCity(bo.getEndCity());
}}, false, true)).getData();
if(null != companyDetails && companyDetails.size() > 0) {
bo.setEndCompanyId(companyDetails.get(0).getId());
}
}
}
}
}
public void initDictionary() {
......
package com.xxfc.platform.order;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class InvitationTest {
@Autowired
BaseOrderBiz baseOrderBiz;
@Test
public void test() {
BaseOrder baseOrder =baseOrderBiz.selectById(93);
baseOrder.setRefundTime(System.currentTimeMillis());
baseOrder.setVersion(baseOrder.getVersion() - 1);
baseOrderBiz.updateSelectiveById(baseOrder);
log.info("success");
}
}
package com.xxfc.platform.order;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashMap;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class OrderTest {
@Autowired
BaseOrderBiz baseOrderBiz;
@Test
public void test() {
BaseOrder baseOrder =baseOrderBiz.selectById(93);
baseOrder.setRefundTime(System.currentTimeMillis());
baseOrder.setVersion(baseOrder.getVersion() - 1);
baseOrderBiz.updateSelectiveById(baseOrder);
log.info("success");
}
}
package com.xxfc.platform.order;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeoutException;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class RabbitmqTest {
static final String exchangeName = "test_exchange";
static final String queueName = "test_queue";
static final String routingKey = "test_queue";
@Test
public void test() throws IOException, TimeoutException {
//建立连接,创建通道
ConnectionFactory fc = new ConnectionFactory();
fc.setHost("10.5.52.3");
fc.setPort(5672);
fc.setUsername("guest");
fc.setPassword("guest");
fc.setVirtualHost("my_vhost");
Connection conn = fc.newConnection();
Channel channel = conn.createChannel();
channel.exchangeDelete(exchangeName); //删除路由
Map<String, Object> map = new HashMap<>();
map.put("x-delayed-type", "direct");
channel.exchangeDeclare(exchangeName, "x-delayed-message",false, false,map); //创建路由
channel.queueDelete(queueName); //删除队列
channel.queueDeclare(queueName, true, false, false, null); //创建队列
channel.queueBind(queueName, exchangeName, routingKey); //绑定路由、队列
channel.close();
conn.close();
// String msg = "测试延时de消息|"+ LocalDateTime.now();
//
// rabbitTemplate.convertAndSend(exchangeName, routingKey, msg, (message) ->{
// message.getMessageProperties().setHeader("x-delay", 9000); //延迟9秒
// return message;
// });
}
}
package com.xxfc.platform.order;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeoutException;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class RabbitmqTest2 {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void test() throws IOException, TimeoutException {
List<Integer> list = new ArrayList<Integer>(){{
add(1);add(2);add(3);add(4);add(5);add(6);
}};
//这里的消息可以是任意对象,无需额外配置,直接传即可
log.info("===============延时队列生产消息====================");
log.info("发送时间:{},发送内容:{}", LocalDateTime.now(), list.toString());
rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
rabbitTemplate.convertAndSend(
"test_exchange",
"test_queue",
list,
message -> {
//注意这里时间可以使long,而且是设置header
message.getMessageProperties().setHeader("x-delay",60000);
return message;
}
);
log.info("{}ms后执行", 60000);
}
}
package com.xxfc.platform.order;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeoutException;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class RabbitmqTest3 {
@Autowired
private RabbitTemplate rabbitTemplate;
// @Bean
// @RabbitListener(queues = "delay_queue")
// public
@Test
public void test() throws IOException, TimeoutException {
;
}
}
package com.xxfc.platform.order;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashMap;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class RegionTest {
// @Autowired
// BaseOrderBiz baseOrderBiz;
@Test
public void test() {
//自动根据用户引入的模板引擎库的jar来自动选择使用的引擎
//TemplateConfig为模板引擎的选项,可选内容有字符编码、模板路径、模板加载方式等,默认通过模板字符串渲染
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig());
//假设我们引入的是Beetl引擎,则:
//Template template = engine.getTemplate("{\"key\":\"费用明细\",\"val\":\"\",\"children\":[{\"key\":\"车辆租赁费\",\"val\":\"¥${vehicleAmount}\",\"children\":[{\"key\":\"${modelName}\",\"val\":\"¥${modelAmount}/天\"},{\"key\":\"租用天数\",\"val\":\"${dayNum}天\"},{\"key\":\"房车数量\",\"val\":\"${vehicleNum}辆\"}]},{\"key\":\"服务费(司机)\",\"val\":\"¥${driverAmount}\",\"children\":[{\"key\":\"欣新司机\",\"val\":\"¥${driverPrice}/天\"},{\"key\":\"司机数量\",\"val\":\"{driverNum}个\"},{\"key\":\"房车数量\",\"val\":\"${dayNum}天\"}]},{\"key\":\"用车押金\",\"val\":\"¥${deposit}\"}]}");
Template template = engine.getTemplate("${[a,b,c]}");
//Dict本质上为Map,此处可用Map
// String result = template.render(Dict.create().set("name", "Hutool").set("name2", "Hutool2"));
String result = "";
result = template.render(new HashMap<String, Object>(){{
put("a", 123);
put("b", 456);
put("c", 789);
}});
//template.render(
//Dict.parse(new RentVehiclePriceVO(new BigDecimal("126800.03"), new BigDecimal("106800.03"), new BigDecimal("105000.03"), new BigDecimal("1800"), new BigDecimal("20000"))));
// RentVehiclePriceVO.builder()
// .orderAmount(new BigDecimal("126800.03"))
// .goodsAmount(new BigDecimal("106800.03"))
// .vehicleAmount(new BigDecimal("105000.03"))
// .driverAmount(new BigDecimal("1800"))
// .deposit(new BigDecimal("20000")).build()
//输出:Hello Hutool
log.info(result);
}
}
......@@ -21,6 +21,7 @@
</dependencies>
<build>
<finalName>xx-tour</finalName>
<plugins>
<!-- 此插件用来生成通用mapper的代码 -->
<plugin>
......
......@@ -12,11 +12,26 @@ import lombok.Data;
*/
@Data
public class SmsTemplateDTO {
//客户通知
public static final int RENT_NORMAL = 1;
public static final int RENT_MEMENT = 2;
public static final int TOUR = 3;
public static final int MEMENT = 4;
//后台客服通知
//订单支付完
//租/还车公司相同(订单支付后立即发送给相关负责人)
public static final int TAAKE_CAR = 5;
//租/还车公司不同(发给租车公司负责人,订单支付后发送)
public static final int DIFFERENT_TAAKE_CAR = 6;
//已交车
// 租/还车公司不同(发给还车公司负责人,订单出车后发))(租/还车公司相同不发)
public static final int ALSO_CAR = 7;
//取消订单
public static final int CANCEL = 8;
//类型:1-租车订单通知(普通用户),2-租车订单短信(会员权益),3-旅游订单短信,4-加入会员通知
private Integer type;
//手机号码(多个短信逗号隔开)
......
......@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
* @description 区域码 接口
* @data 2019/7/3 20:00
*/
@FeignClient(value = "xx-universal",contextId = "region")
@FeignClient(value = "xx-universal", contextId = "region")
public interface RegionFeign {
/**
......
......@@ -23,7 +23,7 @@ import java.util.Map;
* @author wanghaobin
* @create 2017-06-21 8:11
*/
@FeignClient(value = "xx-universal")
@FeignClient(value = "xx-universal", contextId = "universal-base")
public interface ThirdFeign {
@RequestMapping(value = "/sms/app/unauth/send", method = RequestMethod.GET)
public JSONObject send(@RequestParam(value = "phone") String phone);
......@@ -32,7 +32,7 @@ public interface ThirdFeign {
public JSONObject sendCode(@RequestParam("phone") String phone, @RequestParam("code")String code, @RequestParam("templateCode")String templateCode );
//云通讯短信机
@RequestMapping(value = "/sms/app/unauth/sendTemplate", method = RequestMethod.POST)
public ObjectRestResponse sendTemplate(SmsTemplateDTO smsTemplateDTO);
public ObjectRestResponse sendTemplate(@RequestBody SmsTemplateDTO smsTemplateDTO);
@RequestMapping(value = "/file/app/unauth/uploadFiles", method = RequestMethod.POST)
public JSONObject uploadFiles(@RequestParam(value = "files") MultipartFile[] files);
@RequestMapping(value = "/pay/app/wx", method = RequestMethod.POST)
......@@ -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);
......
......@@ -79,12 +79,6 @@
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-admin-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
......@@ -97,6 +91,7 @@
</dependencies>
<build>
<finalName>xx-universal</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
......
......@@ -17,6 +17,14 @@ public class CCPRestSmsBiz{
public static final String TEMPLATE_ID_ORDER_TOUR = "457272";
//加入会员通知4
public static final String TEMPLATE_ID_MEMBER = "457273";
//租/还车公司相同(订单支付后立即发送给相关负责人)5
public static final String TEMPLATE_ID_TAAKE_CAR = "457501";
//租/还车公司不同(发给租车公司负责人,订单支付后发送)6
public static final String TEMPLATE_ID_DIFFERENT_TAAKE_CAR = "457502";
// 租/还车公司不同(发给还车公司负责人,订单出车后发))(相同不发)7
public static final String TEMPLATE_ID_ALSO_CAR = "457503";
//取消订单8
public static final String TEMPLATE_ID_CANCEL = "457506";
//发送模板消息
......@@ -34,6 +42,18 @@ public class CCPRestSmsBiz{
case 4 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_MEMBER);
break;
case 5 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_TAAKE_CAR);
break;
case 6 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_DIFFERENT_TAAKE_CAR);
break;
case 7 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_ALSO_CAR);
break;
case 8 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL);
break;
}
}
......
package com.xxfc.platform.universal.controller;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
......@@ -16,8 +17,6 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("refund")
public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRefund> {
@RequestMapping(value = "/app/wx", method = RequestMethod.POST) //匹配的是href中的download请求
public JSONObject refund(@RequestBody OrderRefundVo orderRefundVo) {
try {
......
package com.xxfc.platform.order;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberApplicationTests {
}
package com.xxfc.platform.order.controller;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.xxfc.platform.order.MemberApplicationTests;
import com.xxfc.platform.universal.controller.MemberInfoController;
import com.xxfc.platform.universal.vo.MemberFamilyInfoVo;
import com.xxfc.platform.universal.vo.MemberInfoVo;
import org.junit.Assert;
import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static com.xxfc.platform.universal.entity.MemberInfo.SEX_MAN;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MemberInfoControllerTest extends MemberApplicationTests {
private MemberInfoVo memberInfoVo;
@Autowired
private MemberInfoController controller;
@Before
public void setUp() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
memberInfoVo = new MemberInfoVo();
memberInfoVo.setId(1);
memberInfoVo.setName("张三");
memberInfoVo.setSex(SEX_MAN);
memberInfoVo.setCardNumber("123456789");
memberInfoVo.setBirthday(sdf.parse("1988-01-01"));
memberInfoVo.setIdNumber("421000000000000000");
memberInfoVo.setCertificateAddress("皇后大道");
memberInfoVo.setEmail("xxxxx@xxx.com");
memberInfoVo.setWx("13312341234");
memberInfoVo.setMemberType((byte) 0);
memberInfoVo.setTelephone("0769-22223333");
memberInfoVo.setMobilePhone("13312341234");
memberInfoVo.setAddress("皇后大道东");
memberInfoVo.setWorkplace("皇后大道西");
memberInfoVo.setJob("test");
memberInfoVo.setInviter("nothing");
memberInfoVo.setProfession("test");
memberInfoVo.setPayType((byte) 0);
memberInfoVo.setMemberSignatureDate(new Date());
memberInfoVo.setManager("XXX");
memberInfoVo.setManagerSignatureDate(new Date());
// memberInfoVo.setCreateDate(new Date());
memberInfoVo.setCreateUserId(1);
memberInfoVo.setCreateUserName("admin");
memberInfoVo.setState((byte) 1);
List<MemberFamilyInfoVo> family = new ArrayList<>();
MemberFamilyInfoVo father = new MemberFamilyInfoVo();
father.setName("张二");
father.setRelationship("父子");
family.add(father);
MemberFamilyInfoVo mother = new MemberFamilyInfoVo();
mother.setName("李二");
mother.setRelationship("母子");
family.add(mother);
memberInfoVo.setFamily(family);
}
@Test
public void t_001_insert() {
// BaseResponse response = controller.insert(memberInfoVo);
// Assert.assertEquals(200, response.getStatus());
}
@Test
public void t_002_get() {
// ObjectRestResponse<MemberInfoVo> response = controller.get(memberInfoVo.getId());
// Assert.assertEquals(200, response.getStatus());
// Assert.assertNotNull(response.getData());
// Assert.assertEquals("张三", response.getData().getName());
}
@Test
public void t_003_update() {
// String eMail = "test@qq.com";
// MemberInfoVo member = controller.get(memberInfoVo.getId()).getData();
// List<MemberFamilyInfoVo> family = member.getFamily();
// MemberFamilyInfoVo family1 = family.get(0);
// family1.setId(null);
// family1.setName("大熊");
// family1.setRelationship("兄弟");
// MemberFamilyInfoVo family2 = family.get(1);
// family2.setName("熊二");
// family2.setRelationship("兄弟");
// member.setEmail(eMail);
// BaseResponse response = controller.update(member);
// Assert.assertEquals(200, response.getStatus());
// ObjectRestResponse<MemberInfoVo> resp = controller.get(memberInfoVo.getId());
// Assert.assertEquals(eMail, resp.getData().getEmail());
//
// List<MemberFamilyInfoVo> familyInfos = resp.getData().getFamily();
// for (MemberFamilyInfoVo info : familyInfos) {
// Assert.assertTrue(family1.getName().equals(info.getName())
// || family2.getName().equals(info.getName()));
// }
}
@Test
public void t_004_getAll() {
// TableResultResponse<MemberInfoVo> response = controller.getAll(null,1, 10);
// Assert.assertEquals(200, response.getStatus());
// Assert.assertTrue(response.getData().getRows().size() > 0);
}
@Test
public void t_005_delete() {
// BaseResponse response = controller.delete(memberInfoVo.getId());
// Assert.assertEquals(200, response.getStatus());
}
}
\ No newline at end of file
......@@ -105,4 +105,18 @@ public class BranchCompany {
private Integer zoneId;
private String phone;
/**
* 租车客服电话
*/
@Column(name = "vehice_service_phone")
@ApiModelProperty("租车客服电话")
private String vehiceServicePhone;
/**
* 旅游客服电话
*/
@Column(name = "tour_service_phone")
@ApiModelProperty("旅游客服电话")
private String tourServicePhone;
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Set;
import java.util.Map;
/**
* Created by ace on 2017/9/15.
......@@ -56,9 +57,11 @@ public interface VehicleFeign {
public List<BranchCompany> companyAll(
@RequestParam(value = "dataAll")Integer dataAll,
@RequestParam(value = "dataCompany")String dataCompany,
@RequestParam(value = "dataZone")String dataZone);
@GetMapping("/branchCompany/entityList")
public ObjectRestResponse<List<BranchCompany>> branchCompanyEntityList(@RequestParam("entity") Map<String, Object> entity);
@RequestMapping(value = "/user/license/one", method = RequestMethod.GET)
public RestResponse<VehicleUserLicense> one(@RequestParam(value="id",defaultValue="0")Integer id) throws Exception;
......
......@@ -33,6 +33,7 @@
</dependencies>
<build>
<finalName>xx-vehicle</finalName>
<plugins>
<!-- 此插件用来生成通用mapper的代码 -->
<plugin>
......
package com.xxfc.platform.vehicle.common;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Slf4j
public class BaseController<Biz extends BaseBiz> {
......@@ -12,5 +18,4 @@ public class BaseController<Biz extends BaseBiz> {
protected HttpServletRequest request;
@Autowired
protected Biz baseBiz;
}
......@@ -151,4 +151,12 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
}
return baseBiz.getListByUser(userDTO);
}
@ApiOperation("根据参数查询,等于")
@RequestMapping(value = "/entityList",method = RequestMethod.GET)
@ResponseBody
public ObjectRestResponse<List<BranchCompany>> entityList(BranchCompany entity){
//查询列表数据
return ObjectRestResponse.succ(baseBiz.selectList(entity));
}
}
package com.xxfc.platform.vehicle;
import org.junit.Test;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
public class ListTest {
@Test
public void ListTest(){
List<Object> objects = Arrays.asList();
System.out.println("objects.size()"+objects.get(0));
}
}
package com.xxfc.platform.vehicle;
import cn.hutool.core.comparator.PinyinComparator;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.util.PinyinUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.ace.cache.annotation.Cache;
import com.alibaba.fastjson.JSONObject;
import com.github.stuxuhai.jpinyin.PinyinHelper;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.google.common.collect.Sets;
import com.mysql.cj.conf.RuntimeProperty;
import com.xxfc.platform.vehicle.VehicleApplication;
import com.xxfc.platform.vehicle.biz.SysRegionBiz;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.entity.SysRegion;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.joda.time.DateTime;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.PrintStream;
import java.util.*;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={VehicleApplication.class})
public class RegionTest {
@Autowired
private RedisTemplate customRedisTemplate;
@Autowired
private SysRegionBiz sysRegionBiz;
// public static final String TEST_REDIS_KEY ="redis:{1}";
private final String TEST_REDIS_KEY ="redis:{1}";
@Data
public class Title{
String title;
List<String> lists;
}
@Data
public class City{
List<Title> city;
}
@Data
public class NewData{
Long id;
String name;
String lat;
String lon;
}
@Data
public class NewTitle{
String title;
List<NewData> lists;
}
@Data
public class NewCity{
List<NewTitle> city;
}
@Test
public void test() throws Exception {
String jsonstr = "{\"city\":[{\"title\":\"A\",\"lists\":[\"阿坝\",\"阿拉善\",\"阿里\",\"安康\",\"安庆\",\"鞍山\",\"安顺\",\"安阳\",\"澳门\"]},{\"title\":\"B\",\"lists\":[\"北京\",\"白银\",\"保定\",\"宝鸡\",\"保山\",\"包头\",\"巴中\",\"北海\",\"蚌埠\",\"本溪\",\"毕节\",\"滨州\",\"百色\",\"亳州\"]},{\"title\":\"C\",\"lists\":[\"重庆\",\"成都\",\"长沙\",\"长春\",\"沧州\",\"常德\",\"昌都\",\"长治\",\"常州\",\"巢湖\",\"潮州\",\"承德\",\"郴州\",\"赤峰\",\"池州\",\"崇左\",\"楚雄\",\"滁州\",\"朝阳\"]},{\"title\":\"D\",\"lists\":[\"大连\",\"东莞\",\"大理\",\"丹东\",\"大庆\",\"大同\",\"大兴安岭\",\"德宏\",\"德阳\",\"德州\",\"定西\",\"迪庆\",\"东营\"]},{\"title\":\"E\",\"lists\":[\"鄂尔多斯\",\"恩施\",\"鄂州\"]},{\"title\":\"F\",\"lists\":[\"福州\",\"防城港\",\"佛山\",\"抚顺\",\"抚州\",\"阜新\",\"阜阳\"]},{\"title\":\"G\",\"lists\":[\"广州\",\"桂林\",\"贵阳\",\"甘南\",\"赣州\",\"甘孜\",\"广安\",\"广元\",\"贵港\",\"果洛\"]},{\"title\":\"H\",\"lists\":[\"杭州\",\"哈尔滨\",\"合肥\",\"海口\",\"呼和浩特\",\"海北\",\"海东\",\"海南\",\"海西\",\"邯郸\",\"汉中\",\"鹤壁\",\"河池\",\"鹤岗\",\"黑河\",\"衡水\",\"衡阳\",\"河源\",\"贺州\",\"红河\",\"淮安\",\"淮北\",\"怀化\",\"淮南\",\"黄冈\",\"黄南\",\"黄山\",\"黄石\",\"惠州\",\"葫芦岛\",\"呼伦贝尔\",\"湖州\",\"菏泽\"]},{\"title\":\"J\",\"lists\":[\"济南\",\"佳木斯\",\"吉安\",\"江门\",\"焦作\",\"嘉兴\",\"嘉峪关\",\"揭阳\",\"吉林\",\"金昌\",\"晋城\",\"景德镇\",\"荆门\",\"荆州\",\"金华\",\"济宁\",\"晋中\",\"锦州\",\"九江\",\"酒泉\"]},{\"title\":\"K\",\"lists\":[\"昆明\",\"开封\"]},{\"title\":\"L\",\"lists\":[\"兰州\",\"拉萨\",\"来宾\",\"莱芜\",\"廊坊\",\"乐山\",\"凉山\",\"连云港\",\"聊城\",\"辽阳\",\"辽源\",\"丽江\",\"临沧\",\"临汾\",\"临夏\",\"临沂\",\"林芝\",\"丽水\",\"六安\",\"六盘水\",\"柳州\",\"陇南\",\"龙岩\",\"娄底\",\"漯河\",\"洛阳\",\"泸州\",\"吕梁\"]},{\"title\":\"M\",\"lists\":[\"马鞍山\",\"茂名\",\"眉山\",\"梅州\",\"绵阳\",\"牡丹江\"]},{\"title\":\"N\",\"lists\":[\"南京\",\"南昌\",\"南宁\",\"宁波\",\"南充\",\"南平\",\"南通\",\"南阳\",\"那曲\",\"内江\",\"宁德\",\"怒江\"]},{\"title\":\"P\",\"lists\":[\"盘锦\",\"攀枝花\",\"平顶山\",\"平凉\",\"萍乡\",\"莆田\",\"濮阳\"]},{\"title\":\"Q\",\"lists\":[\"青岛\",\"黔东南\",\"黔南\",\"黔西南\",\"庆阳\",\"清远\",\"秦皇岛\",\"钦州\",\"齐齐哈尔\",\"泉州\",\"曲靖\",\"衢州\"]},{\"title\":\"R\",\"lists\":[\"日喀则\",\"日照\"]},{\"title\":\"S\",\"lists\":[\"上海\",\"深圳\",\"苏州\",\"沈阳\",\"石家庄\",\"三门峡\",\"三明\",\"三亚\",\"商洛\",\"商丘\",\"上饶\",\"山南\",\"汕头\",\"汕尾\",\"韶关\",\"绍兴\",\"邵阳\",\"十堰\",\"朔州\",\"四平\",\"绥化\",\"遂宁\",\"随州\",\"宿迁\",\"宿州\"]},{\"title\":\"T\",\"lists\":[\"天津\",\"太原\",\"泰安\",\"泰州\",\"台州\",\"唐山\",\"天水\",\"铁岭\",\"铜川\",\"通化\",\"通辽\",\"铜陵\",\"铜仁\",\"台湾\"]},{\"title\":\"W\",\"lists\":[\"武汉\",\"乌鲁木齐\",\"无锡\",\"威海\",\"潍坊\",\"文山\",\"温州\",\"乌海\",\"芜湖\",\"乌兰察布\",\"武威\",\"梧州\"]},{\"title\":\"X\",\"lists\":[\"厦门\",\"西安\",\"西宁\",\"襄阳\",\"湘潭\",\"湘西\",\"咸宁\",\"咸阳\",\"孝感\",\"邢台\",\"新乡\",\"信阳\",\"新余\",\"忻州\",\"西双版纳\",\"宣城\",\"许昌\",\"徐州\",\"香港\",\"锡林郭勒\",\"兴安\"]},{\"title\":\"Y\",\"lists\":[\"银川\",\"雅安\",\"延安\",\"延边\",\"盐城\",\"阳江\",\"阳泉\",\"扬州\",\"烟台\",\"宜宾\",\"宜昌\",\"宜春\",\"营口\",\"益阳\",\"永州\",\"岳阳\",\"榆林\",\"运城\",\"云浮\",\"玉树\",\"玉溪\",\"玉林\"]},{\"title\":\"Z\",\"lists\":[\"杂多县\",\"赞皇县\",\"枣强县\",\"枣阳市\",\"枣庄\",\"泽库县\",\"曾都区\",\"泽普县\",\"泽州县\",\"札达县\",\"扎赉特旗\",\"扎兰屯市\",\"扎鲁特旗\",\"扎囊县\",\"张北县\",\"张店区\",\"章贡区\",\"张家港\",\"张家界\",\"张家口\",\"漳平市\",\"漳浦县\",\"章丘市\",\"樟树市\",\"张湾区\",\"彰武县\",\"漳县\",\"张掖\",\"漳州\",\"长子县\",\"湛河区\",\"湛江\",\"站前区\",\"沾益县\",\"诏安县\",\"召陵区\",\"昭平县\",\"肇庆\",\"昭通\",\"赵县\",\"昭阳区\",\"招远市\",\"肇源县\",\"肇州县\",\"柞水县\",\"柘城县\",\"浙江\",\"镇安县\",\"振安区\",\"镇巴县\",\"正安县\",\"正定县\",\"正蓝旗\",\"正宁县\",\"蒸湘区\",\"正镶白旗\",\"正阳县\",\"郑州\",\"镇海区\",\"镇江\",\"浈江区\",\"镇康县\",\"镇赉县\",\"镇平县\",\"振兴区\",\"镇雄县\",\"镇原县\",\"志丹县\",\"治多县\",\"芝罘区\",\"枝江市\",\"芷江侗族自治县\",\"织金县\",\"中方县\",\"中江县\",\"钟楼区\",\"中牟县\",\"中宁县\",\"中山\",\"中山区\",\"钟山区\",\"钟山县\",\"中卫\",\"钟祥市\",\"中阳县\",\"中原区\",\"周村区\",\"周口\",\"周宁县\",\"舟曲县\",\"舟山\",\"周至县\",\"庄河市\",\"诸城市\",\"珠海\",\"珠晖区\",\"诸暨市\",\"驻马店\",\"准格尔旗\",\"涿鹿县\",\"卓尼\",\"涿州市\",\"卓资县\",\"珠山区\",\"竹山县\",\"竹溪县\",\"株洲\",\"株洲县\",\"淄博\",\"子长县\",\"淄川区\",\"自贡\",\"秭归县\",\"紫金县\",\"自流井区\",\"资溪县\",\"资兴市\",\"资阳\"]}]}";
//City city = JSONObject.parseObject
City city = JSONUtil.toBean(jsonstr, City.class);
NewCity newCity = new NewCity();
newCity.setCity(new ArrayList<NewTitle>());
for(Title title : city.getCity()) {
NewTitle newTitle = new NewTitle();
newTitle.setTitle(title.getTitle());
newTitle.setLists(new ArrayList<NewData>());
for(String str : title.getLists()) {
TableResultResponse<SysRegion> sysRegionTableResultResponse = sysRegionBiz.selectByQuery(new Query(new HashMap<String, Object>(){{
put("name", str);
}}));
NewData newData = new NewData(){{
setId(sysRegionTableResultResponse.getData().getRows().get(0).getId());
setName(sysRegionTableResultResponse.getData().getRows().get(0).getName());
}};
// builder()
// .id(sysRegionTableResultResponse.getData().getRows().get(0).getId()).name(sysRegionTableResultResponse.getData().getRows().get(0).getName()).build();
newTitle.getLists().add(newData);
}
newCity.getCity().add(newTitle);
}
//
// List<SysRegion> sysRegions = sysRegionBiz.selectCity();
// String str = new String();
// str += "{ \n\"city\": [";
// for(int i = 1;i<=26;i++) {
// str += "\n{ \"title\": \""+(char)(64+i)+"\", \n";
// str += "\"lists\":[\n";
// Boolean flag = false;
// for(SysRegion sysRegion : sysRegions) {
// if(PinyinHelper.getShortPinyin(sysRegion.getName()).substring(0,1).equals(String.valueOf((char)(96+i)))){
// //(sysRegion.getName()))
// String name = sysRegion.getName();
// if("直辖县级".equals(name)) {
// //获得父级
// SysRegion sysRegionP = sysRegionBiz.selectOne(SysRegion.builder().id(sysRegion.getParentId()).build());
// name = sysRegionP.getName();
// }
// str += "{\"id\":"+sysRegion.getId()+", \"name\":\""+name+"\"},\n";
// flag = true;
// }
// }
// if(flag) {
// str = StrUtil.sub(str, 0, str.length() - 2);
// }
// str += "]";
// str += "},\n";
// }
// str = StrUtil.sub(str, 0, str.length() - 2);
// str += "] \n }";
FileWriter writer = new FileWriter("D://"+ DateUtil.currentSeconds()+ "test.properties");
writer.write(JSONUtil.toJsonStr(newCity));
System.out.println("test");
}
// @Test
// public void test1() {
// int i = DateTime.now().getMinuteOfDay() / 5;
// System.out.println("DateTime.now().getMinuteOfDay() / 5++++++++++++"+i);
// String redisLockKey = RedisKey.SYS_REGION_REFRESH_LOCK +i;//同一日每5分钟只刷新一次
// System.out.println("redisLockKey++++++++++++++++"+redisLockKey);
// String s = String.valueOf(DateTime.now().getMillis());
// System.out.println("s++++++++++++++++++"+s);
// Boolean suc = customRedisTemplate.opsForValue().setIfAbsent(redisLockKey, s);
// Boolean test1 = customRedisTemplate.opsForValue().setIfAbsent("1", "2");
// Boolean test2 = customRedisTemplate.opsForValue().setIfAbsent("1", "3");
// System.out.println("test1///////////////////////////////"+test1);
// System.out.println("test2///////////////////////////////"+test2);
// System.out.println("suc++++++++++++++++++++"+suc);
// }
//
// @Test
// public void testRedis() {
// SysRegion sysRegion = getSysRegion(1);
// System.out.println("sysRegion+++++++++"+sysRegion);
// System.out.println("TEST_REDIS_KEY+++++++++++" + TEST_REDIS_KEY);
// }
//
// @Cache(key = TEST_REDIS_KEY)
// private SysRegion getSysRegion(int id){
// SysRegion sysRegion = sysRegionBiz.selectById(2);
// return sysRegion;
// }
@Test
public void testStream(){
List<Integer> integers = Arrays.asList(1, 3, 5, 7, 9,9);
HashSet<Integer> objects = new HashSet<>();
objects.addAll(integers);
System.out.println(objects);
System.out.println("获取最小值");
Optional<Integer> min = objects.parallelStream().min(Integer::compareTo);
if (min.isPresent()) {
System.out.println(min.get());
}
System.out.println("获取最大");
Optional<Integer> max = integers.parallelStream().max(Integer::compareTo);
if (max.isPresent()) {
System.out.println(max.get());
}
System.out.println("排序");
integers.stream().sorted().forEach(elem -> System.out.println(elem));
System.out.println("筛选");
integers.parallelStream().filter(e ->e>1).filter(e -> e<9).forEach(e -> System.out.println(e));
System.out.println("list的总和为");
integers.stream().reduce((a,b) -> a+b).ifPresent(System.out::println);
}
}
package com.xxfc.platform.vehicle;
import com.xxfc.platform.vehicle.entity.SimpleGenId;
import com.xxfc.platform.vehicle.entity.Student;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={VehicleApplication.class})
public class TimeTest {
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
@Test
public void test() throws Exception {
DateTime startDay =DateTime.parse("2019-06-04", DEFAULT_DATE_TIME_FORMATTER);
System.out.println("test");
}
@Test
public void testStream() throws Exception {
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("张1","11"));
students.add(new Student("张2","12"));
students.add(new Student("张3","13"));
students.add(new Student("张4","14"));
students.add(new Student("张5","15"));
int i=0;
students.forEach(student -> student.setCode(1));
students.forEach(System.out::println);
}
@Test
public void testMapper(){
Student sOne = new Student("张4", "14",1);
sOne.getId();
// Assert.assertEquals();
SimpleGenId simpleGenId = new SimpleGenId();
Long aLong = simpleGenId.genId("6696", "122223");
}
}
package com.xxfc.platform.vehicle;
import org.junit.Test;
import org.springframework.core.task.TaskExecutor;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class TimedTaskTest {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleWithFixedDelay(new MyRunnable(),0,4000,TimeUnit.MILLISECONDS);
}
// @Test
// public void fn1() {
// TaskExecutor taskExecutor = new TaskExecutor() {
// @Override
// public void execute(Runnable task) {
//
// ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
// executorService.scheduleAtFixedRate(
// () -> System.out.println("测试定时任务11111111111111" + System.currentTimeMillis()), 0, 100, TimeUnit.MILLISECONDS);
// System.out.println("========================================================================");
// executorService.schedule(new Runnable() {
// @Override
// public void run() {
// System.out.println("测试定时任务222222222222222222" + System.currentTimeMillis());
// }
// }, 10, TimeUnit.MILLISECONDS);
// }
// };
//
// }
private static class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("测试+++++++++++"+System.currentTimeMillis());
// ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
//
// executorService.scheduleWithFixedDelay(new Runnable() {
// @Override
// public void run() {
// System.out.println("测试+++++++"+System.currentTimeMillis());
// }
// },0,100,TimeUnit.MILLISECONDS);
}
}
}
package com.xxfc.platform.vehicle.entity;
public class IdService {
}
package com.xxfc.platform.vehicle.entity;
import tk.mybatis.mapper.genid.GenId;
public class SimpleGenId implements GenId<Long> {
private Long time;
private Integer seq;
@Override
public synchronized Long genId(String table, String column) {
long current = System.currentTimeMillis();
if (time == null || time != current) {
time = current;
seq = 1;
} else if (current == time) {
seq++;
}
return (time << 20) | seq;
}
}
\ No newline at end of file
package com.xxfc.platform.vehicle.entity;
import com.xxfc.platform.vehicle.entity.UUIdGenId;
import lombok.Data;
import tk.mybatis.mapper.annotation.KeySql;
import javax.persistence.Id;
import java.io.Serializable;
@Data
public class Student implements Serializable {
public static final Integer NO_AMOUNT_LIMIT = -1;
@Id
@KeySql(genId = UUIdGenId.class)
private Integer id;
private String name;
private String age;
private int code;
public Student(String name, String age, int code) {
this.name=name;
this.age=age;
this.code=code;
}
public Student(String name, String age) {
this.name=name;
this.age=age;
}
}
package com.xxfc.platform.vehicle.entity;
import tk.mybatis.mapper.genid.GenId;
import java.util.UUID;
public class UUIdGenId implements GenId {
@Override
public Object genId(String table, String column) {
return UUID.randomUUID().toString();
}
}
//package com.xxfc.platform.vehicle.entity;
//import tk.mybatis.mapper.genid.GenId;
//
//public class VestaGenId implements GenId<Long> {
// public Long genId(String table, String column){
// //ApplicationUtil.getBean 需要自己实现
// IdService idService = ApplicationUtil.getBean(IdService.class);
// return idService.genId();
// }
//}
\ No newline at end of file
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