Commit e6326a66 authored by hanfeng's avatar hanfeng

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

# Conflicts:
#	xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
parents b1201cf0 f926c1bb
...@@ -37,9 +37,6 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter { ...@@ -37,9 +37,6 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter {
if (annotation == null) { if (annotation == null) {
annotation = handlerMethod.getMethodAnnotation(IgnoreUserToken.class); annotation = handlerMethod.getMethodAnnotation(IgnoreUserToken.class);
} }
if (annotation != null) {
return super.preHandle(request, response, handler);
}
String token = request.getHeader(userAuthConfig.getTokenHeader()); String token = request.getHeader(userAuthConfig.getTokenHeader());
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {
if (request.getCookies() != null) { if (request.getCookies() != null) {
...@@ -50,7 +47,16 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter { ...@@ -50,7 +47,16 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter {
} }
} }
} }
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(token); IJWTInfo infoFromToken = null;
try {
infoFromToken = userAuthUtil.getInfoFromToken(token);
}catch (Exception e){
if (annotation != null) {
return super.preHandle(request, response, handler);
}else {
throw e;
}
}
BaseContextHandler.setUsername(infoFromToken.getUniqueName()); BaseContextHandler.setUsername(infoFromToken.getUniqueName());
BaseContextHandler.setName(infoFromToken.getName()); BaseContextHandler.setName(infoFromToken.getName());
BaseContextHandler.setUserID(infoFromToken.getId()); BaseContextHandler.setUserID(infoFromToken.getId());
......
...@@ -188,6 +188,10 @@ ...@@ -188,6 +188,10 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-amqp</artifactId>
</dependency>
</dependencies> </dependencies>
......
...@@ -59,10 +59,13 @@ public abstract class BaseBiz<M extends Mapper<T>, T> { ...@@ -59,10 +59,13 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
public void insertSelective(T entity) { public void insertSelective(T entity) {
EntityUtils.setCreatAndUpdatInfo(entity); insertSelectiveRe(entity);
mapper.insertSelective(entity);
} }
public int insertSelectiveRe(T entity) {
EntityUtils.setCreatAndUpdatInfo(entity);
return mapper.insertSelective(entity);
}
public void delete(T entity) { public void delete(T entity) {
mapper.delete(entity); mapper.delete(entity);
......
package com.github.wxiaoqi.security.common.config;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.common.config.rabbit.BindDTO;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* rabbitmq配置类
* 包含: 不知道什么orderWater队列
* @author zhoujw
* @date 2019/7/15
*/
public abstract class RabbitCommonConfig {
@Autowired
ConfigurableApplicationContext applicationContext;
public static List<BindDTO> myQueue;
public <T> T registerBean(String name, Class<T> clazz, Object... args) {
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz);
if (args.length > 0) {
for (Object arg : args) {
beanDefinitionBuilder.addConstructorArgValue(arg);
}
}
BeanDefinition beanDefinition = beanDefinitionBuilder.getRawBeanDefinition();
BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) applicationContext.getBeanFactory();
beanFactory.registerBeanDefinition(name, beanDefinition);
return applicationContext.getBean(name, clazz);
}
@Bean
public void registerQueueWithBind() {
if(null != RabbitConstant.exchangeTopicSet) {
RabbitConstant.exchangeTopicSet.forEach(k -> {
registerBean(StrUtil.toCamelCase(k), TopicExchange.class, k, true, false);
});
}
if(null != myQueue) {
myQueue.forEach(en -> {
registerBean(StrUtil.toCamelCase(en.getQueue()), Queue.class, en.getQueue(), Boolean.TRUE);
registerBean(StrUtil.toCamelCase(en.getQueue())+ "Binding", Binding.class, en.getQueue(), Binding.DestinationType.QUEUE, en.getExchange(), en.getKey(), Collections.EMPTY_MAP);
});
}
}
}
package com.github.wxiaoqi.security.common.config.rabbit;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class BindDTO {
String queue;
String exchange;
String key;
}
package com.github.wxiaoqi.security.common.config.rabbit;
import java.util.HashSet;
import java.util.Set;
public class RabbitConstant {
public static Set<String> exchangeTopicSet;
public static Set<String> exchangeDirectSet;
public static String TOPIC_EXC = "_topic_exchange";
public static String DIRECT_EXC = "_direct_exchange";
public static final String ADMIN = "admin";
public static final String ADMIN_TOPIC = ADMIN+ TOPIC_EXC;
public static final String ORDER = "order";
public static final String ORDER_TOPIC = ORDER+ TOPIC_EXC;
/**************************key*********************************/
// public static final String
static {
exchangeTopicSet = new HashSet<String>() {{
add(ADMIN_TOPIC);
add(ORDER_TOPIC);
}};
}
}
...@@ -6,6 +6,7 @@ package com.github.wxiaoqi.security.common.constant; ...@@ -6,6 +6,7 @@ package com.github.wxiaoqi.security.common.constant;
public class CommonConstants { public class CommonConstants {
public static final Integer SYS_TRUE = 1; public static final Integer SYS_TRUE = 1;
public static final Integer SYS_FALSE = 0; public static final Integer SYS_FALSE = 0;
public static final Integer SYS_ZREO = 0;
public static final Integer SYS_JSON_TRUE = 200; public static final Integer SYS_JSON_TRUE = 200;
public final static String RESOURCE_TYPE_MENU = "menu"; public final static String RESOURCE_TYPE_MENU = "menu";
public final static String RESOURCE_TYPE_BTN = "button"; public final static String RESOURCE_TYPE_BTN = "button";
......
package com.github.wxiaoqi.security.common.util;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import java.util.HashSet;
public class XxBizAssert {
public static <T> T notNull(T object) throws IllegalArgumentException {
return notNull(object, "[Assertion failed] - this argument is required; it must not be null");
}
public static <T> T notNull(T object, String errorMsgTemplate, Object... params) throws IllegalArgumentException {
if (object == null) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, new HashSet<String>(){{
add(StrUtil.format(errorMsgTemplate, params));
}});
} else {
return object;
}
}
public static void isNull(Object object, String errorMsgTemplate, Object... params) throws IllegalArgumentException {
if (object != null) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, new HashSet<String>(){{
add(StrUtil.format(errorMsgTemplate, params));
}});
}
}
public static void isNull(Object object) throws IllegalArgumentException {
isNull(object, "[Assertion failed] - the object argument must be null");
}
}
package com.github.wxiaoqi.security.admin.dto;
import lombok.Data;
@Data
public class RegisterParamDTO {
String username;
String password;
String headimgurl;
String nickname;
String mobilecode;
String openId;
String unionid;
Integer type;
String code;
}
package com.github.wxiaoqi.security.admin.dto;
import lombok.Data;
@Data
public class RegisterQueueDTO {
RegisterParamDTO registerParamDTO;
}
...@@ -181,7 +181,7 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -181,7 +181,7 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
} }
public AppUserLogin findUserByImiId(Integer imiId) { public AppUserLogin findUserByImiId(Integer imiId) {
Example example = new Example(AppUserLogin.class); Example example = new Example(AppUserLogin.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("imUserid",imiId); criteria.andEqualTo("imUserid",imiId);
List<AppUserLogin> appUserLogins = mapper.selectByExample(example); 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; ...@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.admin.handler;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.biz.AppUserSellingWaterBiz; import com.github.wxiaoqi.security.admin.biz.AppUserSellingWaterBiz;
import com.github.wxiaoqi.security.admin.config.RabbitAdminConfig;
import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO; import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
...@@ -15,7 +16,7 @@ public class IntegralMQHandler { ...@@ -15,7 +16,7 @@ public class IntegralMQHandler {
@Autowired @Autowired
AppUserSellingWaterBiz waterBiz; AppUserSellingWaterBiz waterBiz;
@RabbitListener(queues = "orderWater_queue") @RabbitListener(queues = RabbitAdminConfig.ORDER_WATER_QUEUE)
public void integralHandler(String json) { public void integralHandler(String json) {
log.info("接收到的消息:json = {}", json); log.info("接收到的消息:json = {}", json);
try{ try{
......
...@@ -15,6 +15,7 @@ import com.github.wxiaoqi.security.admin.vo.AppUserVo; ...@@ -15,6 +15,7 @@ import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.admin.vo.ImiVo; import com.github.wxiaoqi.security.admin.vo.ImiVo;
import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo; import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo;
import com.github.wxiaoqi.security.api.vo.user.AppUserInfo; import com.github.wxiaoqi.security.api.vo.user.AppUserInfo;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import com.github.wxiaoqi.security.common.msg.BaseResponse; import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.EmojiFilter; import com.github.wxiaoqi.security.common.util.EmojiFilter;
...@@ -26,6 +27,7 @@ import com.github.wxiaoqi.security.common.util.result.JsonResultUtil; ...@@ -26,6 +27,7 @@ import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.im.feign.ImFeign; import com.xxfc.platform.im.feign.ImFeign;
import com.xxfc.platform.universal.dto.RegionDTO; import com.xxfc.platform.universal.dto.RegionDTO;
import com.xxfc.platform.universal.feign.MQSerderFeign;
import com.xxfc.platform.universal.feign.RegionFeign; import com.xxfc.platform.universal.feign.RegionFeign;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -38,6 +40,7 @@ import org.springframework.stereotype.Service; ...@@ -38,6 +40,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate; 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.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
...@@ -62,6 +65,9 @@ public class AppPermissionService { ...@@ -62,6 +65,9 @@ public class AppPermissionService {
@Autowired @Autowired
ThirdFeign thirdFeign; ThirdFeign thirdFeign;
@Autowired
MQSerderFeign mqSerderFeign;
@Autowired @Autowired
ImFeign imFeign; ImFeign imFeign;
...@@ -300,6 +306,10 @@ public class AppPermissionService { ...@@ -300,6 +306,10 @@ public class AppPermissionService {
data.put("imUserId", imUserId); data.put("imUserId", imUserId);
} }
if (data != null) { if (data != null) {
// try {
// //注册成功,发送队列
// mqSerderFeign.sendMessage(RabbitConstant.ADMIN_TOPIC, )
// }
return JsonResultUtil.createSuccessResultWithObj(data); return JsonResultUtil.createSuccessResultWithObj(data);
} else { } else {
return JsonResultUtil.createDefaultFail(); return JsonResultUtil.createDefaultFail();
......
...@@ -10,7 +10,7 @@ spring: ...@@ -10,7 +10,7 @@ spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://10.5.52.3:3306/xxfc_app?useUnicode=true&characterEncoding=UTF-8 url: jdbc:mysql://10.5.52.3:3306/xxfc_activity?useUnicode=true&characterEncoding=UTF-8
username: root username: root
password: sslcloud123*() password: sslcloud123*()
jackson: jackson:
......
#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F #\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F
#\u5305\u540D #\u5305\u540D
package=com.xxfc.platform.app package=com.xxfc.platform.activity
#\u4F5C\u8005 #\u4F5C\u8005
author=zjw author=zjw
#Email #Email
......
...@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.api.vo.config; ...@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.api.vo.config;
import feign.Logger; import feign.Logger;
import feign.RequestInterceptor; import feign.RequestInterceptor;
import feign.RequestTemplate; import feign.RequestTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
...@@ -30,7 +31,9 @@ public class HeaderConfig implements RequestInterceptor { ...@@ -30,7 +31,9 @@ public class HeaderConfig implements RequestInterceptor {
while (headerNames.hasMoreElements()){ while (headerNames.hasMoreElements()){
String headerName = headerNames.nextElement(); String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName); 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; ...@@ -3,6 +3,10 @@ package com.xxfc.platform.activity.entity;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import javax.persistence.*; import javax.persistence.*;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -75,6 +79,27 @@ public class ActivityPopularize implements Serializable { ...@@ -75,6 +79,27 @@ public class ActivityPopularize implements Serializable {
@Column(name = "type") @Column(name = "type")
@ApiModelProperty(value = "推广活动类型 1--进度任务型") @ApiModelProperty(value = "推广活动类型 1--进度任务型")
private Integer type; private Integer type;
/**
* 标记编号 前两位为类型 如 1==01 ;后两位为区分每次活动的编号
*/
@Column(name = "code")
@ApiModelProperty(value = "标记编号 前两位为类型 如 1==01 ;后两位为区分每次活动的编号")
private String code;
/**
* 活动开始时间
*/
@Column(name = "start_time")
@ApiModelProperty(value = "活动结束时间")
@JSONField(serializeUsing= ToStringSerializer.class)
private Long startTime;
/**
* 活动开始时间
*/
@Column(name = "end_time")
@ApiModelProperty(value = "活动结束时间")
@JSONField(serializeUsing= ToStringSerializer.class)
private Long endTime;
} }
...@@ -53,7 +53,7 @@ public class ActivityPopularizeItem implements Serializable { ...@@ -53,7 +53,7 @@ public class ActivityPopularizeItem implements Serializable {
*/ */
@Column(name = "descr") @Column(name = "descr")
@ApiModelProperty(value = "描述、详情等(看情况使用)") @ApiModelProperty(value = "描述、详情等(看情况使用)")
private Integer descr; private String descr;
/** /**
* 推广活动id * 推广活动id
...@@ -70,11 +70,23 @@ public class ActivityPopularizeItem implements Serializable { ...@@ -70,11 +70,23 @@ public class ActivityPopularizeItem implements Serializable {
private Integer progress; private Integer progress;
/** /**
* * 1--领取任务;2--分享;3--推荐个数
*/ */
@Column(name = "type") @Column(name = "type")
@ApiModelProperty(value = "") @ApiModelProperty(value = "1--领取任务;2--分享;3--推荐个数")
private Integer type; private Integer type;
/**
* 排序
*/
@Column(name = "sort")
@ApiModelProperty(value = "排序")
private Integer sort;
/**
* 详情内容,用于存储对应任务的一些值
*/
@Column(name = "detail")
@ApiModelProperty(value = "详情内容,用于存储对应任务的一些值")
private String detail;
} }
...@@ -75,6 +75,13 @@ public class ActivityPopularizeLog implements Serializable { ...@@ -75,6 +75,13 @@ public class ActivityPopularizeLog implements Serializable {
@Column(name = "item_id") @Column(name = "item_id")
@ApiModelProperty(value = "推广活动项id ") @ApiModelProperty(value = "推广活动项id ")
private Integer itemId; private Integer itemId;
/**
* 推广活动项id
*/
@Column(name = "status")
@ApiModelProperty(value = "状态 0--未完成;1--完成;-1--失败")
private Integer status;
} }
package com.xxfc.platform.activity.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 活动的参与者关系表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-17 19:51:17
*/
@Data
@Table(name = "activity_popularize_relation")
public class ActivityPopularizeRelation implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 主用户
*/
@Column(name = "major_user_id")
@ApiModelProperty(value = "主用户")
private Integer majorUserId;
/**
* 次要用户
*/
@Column(name = "minor_user_id")
@ApiModelProperty(value = "次要用户")
private Integer minorUserId;
/**
* 活动id
*/
@Column(name = "popularize_id")
@ApiModelProperty(value = "活动id")
private Integer popularizeId;
}
...@@ -82,6 +82,13 @@ public class ActivityPopularizeUser implements Serializable { ...@@ -82,6 +82,13 @@ public class ActivityPopularizeUser implements Serializable {
@Column(name = "finish_item") @Column(name = "finish_item")
@ApiModelProperty(value = "已经完成了的项") @ApiModelProperty(value = "已经完成了的项")
private String finishItem; private String finishItem;
/**
* 参与的用户的id
*/
@Column(name = "user_id")
@ApiModelProperty(value = "参与的用户的id")
private Integer userId;
} }
package com.xxfc.platform.activity.entity; package com.xxfc.platform.activity.entity;
import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -10,7 +9,6 @@ import javax.persistence.Table; ...@@ -10,7 +9,6 @@ import javax.persistence.Table;
@Table(name = "integral_user_record") @Table(name = "integral_user_record")
@Data @Data
@Builder
public class IntegralUserRecord { public class IntegralUserRecord {
/** /**
* 主键id * 主键id
......
...@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiOperation; ...@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
/** /**
...@@ -27,10 +28,13 @@ public interface ActivityFeign { ...@@ -27,10 +28,13 @@ public interface ActivityFeign {
@ApiOperation("优惠卷使用") @ApiOperation("优惠卷使用")
@RequestMapping(value = "/user/use", method = RequestMethod.POST) @RequestMapping(value = "/user/use", method = RequestMethod.POST)
public ObjectRestResponse use( public BigDecimal use(
@RequestParam(value = "userId") Integer userId, @RequestParam(value = "userId") Integer userId,
@RequestParam(value = "TickerNo") String TickerNo, @RequestParam(value = "TickerNo") String TickerNo,
@RequestParam(value = "orderNo") String orderNo); @RequestParam(value = "orderNo") String orderNo,
@RequestParam(value = "channel") Integer channel,
@RequestParam(value = "amout") BigDecimal amout,
@RequestParam(value = "type") Integer type);
@ApiOperation("优惠卷取消使用") @ApiOperation("优惠卷取消使用")
@RequestMapping(value = "/user/cancelUse", method = RequestMethod.POST) @RequestMapping(value = "/user/cancelUse", method = RequestMethod.POST)
......
...@@ -26,6 +26,14 @@ public class IntegralUserRecordDto extends PageParam { ...@@ -26,6 +26,14 @@ public class IntegralUserRecordDto extends PageParam {
private Integer channelId; private Integer channelId;
public IntegralUserRecord getIntegralUserRecord() { 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 @@ ...@@ -21,6 +21,7 @@
</dependencies> </dependencies>
<build> <build>
<finalName>xx-activity</finalName>
<plugins> <plugins>
<!-- 此插件用来生成通用mapper的代码 --> <!-- 此插件用来生成通用mapper的代码 -->
<plugin> <plugin>
......
...@@ -19,7 +19,8 @@ import tk.mybatis.spring.annotation.MapperScan; ...@@ -19,7 +19,8 @@ import tk.mybatis.spring.annotation.MapperScan;
*/ */
@SpringBootApplication(scanBasePackages = { @SpringBootApplication(scanBasePackages = {
"com.xxfc.platform", "com.xxfc.platform",
"com.github.wxiaoqi", "com.github.wxiaoqi.security.common.handler",
"com.github.wxiaoqi.security.common.log"
}) })
@EnableDiscoveryClient @EnableDiscoveryClient
@EnableScheduling @EnableScheduling
......
package com.xxfc.platform.activity.biz;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import com.xxfc.platform.activity.mapper.ActivityPopularizeRelationMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
* 活动的参与者关系表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-17 19:51:17
*/
@Service
public class ActivityPopularizeRelationBiz extends BaseBiz<ActivityPopularizeRelationMapper,ActivityPopularizeRelation> {
}
\ No newline at end of file
package com.xxfc.platform.activity.biz; package com.xxfc.platform.activity.biz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityPopularizeUser; import com.xxfc.platform.activity.entity.ActivityPopularizeUser;
...@@ -15,4 +17,11 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz; ...@@ -15,4 +17,11 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
*/ */
@Service @Service
public class ActivityPopularizeUserBiz extends BaseBiz<ActivityPopularizeUserMapper,ActivityPopularizeUser> { public class ActivityPopularizeUserBiz extends BaseBiz<ActivityPopularizeUserMapper,ActivityPopularizeUser> {
public ActivityPopularizeUser insertSelectiveReT(ActivityPopularizeUser entity) {
if(insertSelectiveRe(entity) > 0) {
return selectById(entity.getId());
}else {
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
}
}
} }
\ No newline at end of file
package com.xxfc.platform.activity.biz; package com.xxfc.platform.activity.biz;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.biz.BaseBiz; 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.msg.ObjectRestResponse;
import com.xxfc.platform.activity.entity.IntegralRule; import com.xxfc.platform.activity.entity.IntegralRule;
import com.xxfc.platform.activity.entity.IntegralSignRecord; import com.xxfc.platform.activity.entity.IntegralSignRecord;
import com.xxfc.platform.activity.entity.IntegralUserRecord; 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.mapper.IntegralSignRecordMapper;
import com.xxfc.platform.activity.user.UserInfoBiz; import com.xxfc.platform.activity.user.UserInfoBiz;
import com.xxfc.platform.activity.util.IntegralToolsUtils; import com.xxfc.platform.activity.util.IntegralToolsUtils;
import com.xxfc.platform.activity.vo.IntegralRuleDto; import com.xxfc.platform.activity.vo.IntegralRuleDto;
import com.xxfc.platform.activity.vo.IntegralUserRecordDto; 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.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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat; import java.util.Date;
import java.util.*; import java.util.List;
@Service @Service
@Transactional @Transactional
...@@ -114,7 +106,7 @@ public class IntegralSignRecordBiz extends BaseBiz<IntegralSignRecordMapper, Int ...@@ -114,7 +106,7 @@ public class IntegralSignRecordBiz extends BaseBiz<IntegralSignRecordMapper, Int
integralSignRecord.setLastTime(new Date().getTime()); integralSignRecord.setLastTime(new Date().getTime());
mapper.updateByPrimaryKeySelective(integralSignRecord); mapper.updateByPrimaryKeySelective(integralSignRecord);
addPoint(objectRestResponse.getData(),integralSignRecord, appUserDTO, integralSignRecord.getSignDays()); addPoint(objectRestResponse.getData(),integralSignRecord, appUserDTO, integralSignRecord.getSignDays());
return ObjectRestResponse.succ(); return ObjectRestResponse.succ(objectRestResponse.getData().getPoint());
} }
return ObjectRestResponse.createFailedResult(1006,"签到次数已达到上限,请下次再来"); return ObjectRestResponse.createFailedResult(1006,"签到次数已达到上限,请下次再来");
} }
......
package com.xxfc.platform.activity.biz; package com.xxfc.platform.activity.biz;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.constant.RestCode; import com.github.wxiaoqi.security.common.constant.RestCode;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query; import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.vo.PageDataVO; 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.IntegralRule;
import com.xxfc.platform.activity.entity.IntegralUserRecord; import com.xxfc.platform.activity.entity.IntegralUserRecord;
import com.xxfc.platform.activity.entity.IntegralUserTotal; import com.xxfc.platform.activity.entity.IntegralUserTotal;
...@@ -20,7 +18,6 @@ import com.xxfc.platform.activity.vo.IntegralUserTotalDto; ...@@ -20,7 +18,6 @@ import com.xxfc.platform.activity.vo.IntegralUserTotalDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -144,6 +141,11 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -144,6 +141,11 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
if (integralUserRecordDto == null) { if (integralUserRecordDto == null) {
return ObjectRestResponse.paramIsEmpty(); 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); List<IntegralUserRecord> integralUserRecordList = mapper.selectByUserAndTime(integralUserRecordDto);
return ObjectRestResponse.succ(integralUserRecordList); return ObjectRestResponse.succ(integralUserRecordList);
} }
......
...@@ -17,6 +17,7 @@ import com.xxfc.platform.activity.mapper.UserCouponMapper; ...@@ -17,6 +17,7 @@ import com.xxfc.platform.activity.mapper.UserCouponMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -127,23 +128,47 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> { ...@@ -127,23 +128,47 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> {
} }
//支付后更新优惠卷状态 //支付后更新优惠卷状态
public void useTickerNo(Integer userId,String TickerNo,String orderNo){ public BigDecimal useTickerNo(Integer userId, String TickerNo, String orderNo,Integer channel,BigDecimal amout,Integer type){
BigDecimal couponAmout=new BigDecimal("0.00");
if (userId==null||userId==0||StringUtils.isBlank(TickerNo)){ if (userId==null||userId==0||StringUtils.isBlank(TickerNo)){
log.error("----参数不能为空"); log.error("----参数不能为空");
return; return couponAmout;
} }
Example example=new Example(UserCoupon.class); Example example=new Example(UserCoupon.class);
example.createCriteria().andEqualTo("TickerNo",TickerNo).andEqualTo("isDel",0); example.createCriteria().andEqualTo("TickerNo",TickerNo).andEqualTo("isDel",0);
List<UserCoupon> list=selectByExample(example); List<UserCoupon> list=selectByExample(example);
if(list.size()==0){ if(list.size()==0){
log.error(userId+"----已领优惠卷"); log.error(userId+"----已领优惠卷");
return; return couponAmout;
} }
UserCoupon userCoupon=list.get(0);
userCoupon.setIsUse(1); UserCoupon userCoupon=list.get(0);
userCoupon.setOrderNo(orderNo); if (type==1){
userCoupon.setUseTime(System.currentTimeMillis()); userCoupon.setIsUse(1);
updateSelectiveById(userCoupon); userCoupon.setOrderNo(orderNo);
userCoupon.setUseTime(System.currentTimeMillis());
updateSelectiveById(userCoupon);
}
return getCouponAmout(userCoupon.getCouponId(),channel,amout);
}
public BigDecimal getCouponAmout(Integer couponId,Integer channel,BigDecimal amout) {
BigDecimal couponAmout = new BigDecimal("0.00");
Coupon coupon = couponBiz.selectById(couponId);
if (coupon != null && coupon.getChannel() == channel) {
Integer type = coupon.getType();
if (type != null) {
BigDecimal useAmout = coupon.getUsedAmount();
if (amout.compareTo(useAmout) > 0) {
if (type == 3 || (type == 1 && (amout.compareTo(coupon.getWithAmount()) >= 0))) {
couponAmout = amout.subtract(useAmout);
}
}
}
}
return couponAmout;
} }
//取消使用优惠卷 //取消使用优惠卷
......
package com.github.wxiaoqi.security.admin.config; package com.xxfc.platform.activity.config;
import org.springframework.amqp.core.*; import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/** /**
* rabbitmq配置类 * rabbitmq配置类
* 包含: 不知道什么orderWater队列 * 包含: 不知道什么orderWater队列
...@@ -14,20 +14,20 @@ import java.util.Map; ...@@ -14,20 +14,20 @@ import java.util.Map;
* @date 2019/7/15 * @date 2019/7/15
*/ */
@Configuration @Configuration
public class RabbitConfig { public class RabbitUserConfig {
public static final String HZ_EXC = "hz_exchange"; public static final String BASE_EXC = "hz_exchange";
public static final String ORDER_WATER_QUEUE = "orderWater_queue"; public static final String INTEGRAL_QUEUE = "integral_queue";
public static final String ORDER_WATER_KEY = "order"; public static final String ORDER_WATER_KEY = "order";
/** /**
* 队列交换机 * 队列交换机
* 注意这里的交换机类型:CustomExchange * 注意这里的交换机类型:CustomExchange
* @return * @return
*/ */
@Bean @Bean
public DirectExchange directExchange(){ public DirectExchange directExchange(){
return new DirectExchange(HZ_EXC, true, false); return new DirectExchange(BASE_EXC, true, false);
} }
/** /**
...@@ -36,7 +36,7 @@ public class RabbitConfig { ...@@ -36,7 +36,7 @@ public class RabbitConfig {
*/ */
@Bean @Bean
public Queue orderWaterQueue(){ public Queue orderWaterQueue(){
return new Queue(ORDER_WATER_QUEUE,true); return new Queue(INTEGRAL_QUEUE,true);
} }
/** /**
......
package com.xxfc.platform.activity.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* @Description : swagger配置配置
* @Author : Mars
* @Date : 2017年9月6日
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${server.port}")
String port;
/**
* Every Docket bean is picked up by the swagger-mvc framework - allowing for multiple
* swagger groups i.e. same code base multiple swagger resource listings.
*/
@Bean
public Docket customDocket(){
List<Parameter> pars = new ArrayList<Parameter>();
ParameterBuilder ticketPar = new ParameterBuilder();
ticketPar.name("Authorization").description("user Authorization")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的ticket参数非必填,传空也可以
ParameterBuilder ticketPar2 = new ParameterBuilder();
ticketPar2.name("x-client-token").description("client Authorization")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的ticket参数非必填,传空也可以
pars.add(ticketPar.build()); //根据每个方法名也知道当前方法在设置什么参数
pars.add(ticketPar2.build());
return new Docket(DocumentationType.SWAGGER_2)
.host("10.1.37.248:8765/api/activity")
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxfc.platform.activity"))
//.apis(RequestHandlerSelectors.any())
.build()
.globalOperationParameters(pars)
.apiInfo(apiInfo());
}
ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("api swagger document")
.description("前后端联调swagger api 文档")
.version("2.1.5.5")
.build();
}
}
\ No newline at end of file
package com.xxfc.platform.activity.config;
import com.github.wxiaoqi.security.auth.client.interceptor.ServiceAuthRestInterceptor;
import com.github.wxiaoqi.security.auth.client.interceptor.UserAuthRestInterceptor;
import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
import com.github.wxiaoqi.security.common.interceptor.CorsInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.ArrayList;
import java.util.Collections;
@Configuration("orderWebConfig")
@Primary
public class WebConfiguration implements WebMvcConfigurer {
@Bean
GlobalExceptionHandler getGlobalExceptionHandler() {
return new GlobalExceptionHandler();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getCorsInterceptor()).addPathPatterns("/**");
registry.addInterceptor(getServiceAuthRestInterceptor()).
addPathPatterns(getIncludePathPatterns());
registry.addInterceptor(getUserAuthRestInterceptor()).
addPathPatterns(getIncludePathPatterns());
}
@Bean
ServiceAuthRestInterceptor getServiceAuthRestInterceptor() {
return new ServiceAuthRestInterceptor();
}
@Bean
CorsInterceptor getCorsInterceptor() {
return new CorsInterceptor();
}
@Bean
UserAuthRestInterceptor getUserAuthRestInterceptor() {
return new UserAuthRestInterceptor();
}
/**
* 需要用户和服务认证判断的路径
* @return
*/
private ArrayList<String> getIncludePathPatterns() {
ArrayList<String> list = new ArrayList<>();
String[] urls = {
"/activityPopularize/**"
};
Collections.addAll(list, urls);
return list;
}
}
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import tk.mybatis.mapper.common.Mapper;
/**
* 活动的参与者关系表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-17 19:51:17
*/
public interface ActivityPopularizeRelationMapper extends Mapper<ActivityPopularizeRelation> {
}
package com.xxfc.platform.activity.rest; package com.xxfc.platform.activity.rest;
import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityPopularizeBiz; import com.github.wxiaoqi.security.common.util.XxBizAssert;
import com.xxfc.platform.activity.entity.ActivityPopularize; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import org.springframework.stereotype.Controller; import com.xxfc.platform.activity.biz.*;
import org.springframework.web.bind.annotation.RequestMapping; import com.xxfc.platform.activity.dto.ItemAddDTO;
import org.springframework.web.bind.annotation.RestController; import com.xxfc.platform.activity.entity.*;
import com.xxfc.platform.activity.vo.popularize.ItemVO;
import com.xxfc.platform.activity.vo.popularize.PopularizeVO;
import com.xxfc.platform.activity.vo.popularize.UserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
@RestController @RestController
@RequestMapping("activityPopularize") @RequestMapping("activityPopularize")
public class ActivityPopularizeController extends BaseController<ActivityPopularizeBiz,ActivityPopularize> { @Api(value = "推广活动", tags = "推广活动")
public class ActivityPopularizeController extends BaseController<ActivityPopularizeBiz,ActivityPopularize> implements UserRestInterface {
@Autowired
ActivityPopularizeBiz popularizeBiz;
@Autowired
ActivityPopularizeItemBiz popularizeItemBiz;
@Autowired
ActivityPopularizeUserBiz popularizeUserBiz;
@Autowired
ActivityPopularizeLogBiz popularizeLogBiz;
@Autowired
ActivityPopularizeRelationBiz popularizeRelationBiz;
@Autowired
UserFeign userFeign;
@Override
public UserFeign getUserFeign() {
return userFeign;
}
@RequestMapping(value = "/app/unauth/popularize-list", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询活动")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse<PopularizeVO> popularizeList(String code, Integer type) {
AppUserDTO appUserDTO = getAppUser();
List<PopularizeVO> popularizeVOs = popularizeBiz.selectList(new ActivityPopularize(){{
setCode(code);
setType(type);
}}).stream().map(v -> {
PopularizeVO vo = BeanUtil.toBean(v, PopularizeVO.class);
vo.setUserVOs(new ArrayList<UserVO>(){{
add(new UserVO(){{setNickname("小A");setHeadimgurl("https://xxtest.upyuns.com/image/app/default_%20avatar.png");}});
add(new UserVO(){{setNickname("小B");setHeadimgurl("https://xxtest.upyuns.com/image/app/default_%20avatar.png");}});
}});
ActivityPopularizeUser[] apu = new ActivityPopularizeUser[1];
Map<Integer, ActivityPopularizeLog>[] aplMap = new HashMap[1];
if(null != appUserDTO) {
//获取用户和活动的关联信息
apu[0] = popularizeUserBiz.selectOne(new ActivityPopularizeUser(){{
setPopularizeId(v.getId());
setUserId(appUserDTO.getUserid());
}});
//获取日志
aplMap[0] = popularizeLogBiz.selectList(new ActivityPopularizeLog(){{
setPopularizeId(v.getId());
setUserId(appUserDTO.getUserid());
}}).parallelStream().collect(Collectors.toMap(ActivityPopularizeLog::getItemId, l -> l));
//设置用户列表
vo.setUserVOs(popularizeRelationBiz.selectList(new ActivityPopularizeRelation(){{
setMajorUserId(appUserDTO.getUserid());
setPopularizeId(v.getId());
}}).stream().map(pr -> {
UserVO userVO = BeanUtil.toBean(userFeign.userDetailById(pr.getMinorUserId()).getData(), UserVO.class);
return userVO;
}).collect(Collectors.toList()));
}
//设置任务项
vo.setItems(popularizeItemBiz.selectByExample(
new Example.Builder(ActivityPopularizeItem.class)
.where(WeekendSqls.<ActivityPopularizeItem>custom()
.andEqualTo(ActivityPopularizeItem::getPopularizeId, v.getId())).orderByAsc("sort").build())
.stream().map(item -> {
ItemVO itemVO = BeanUtil.toBean(item, ItemVO.class);
itemVO.setStatus(SYS_FALSE);
if(null != apu[0]) {
ActivityPopularizeLog log = aplMap[0].get(item.getId());
if(null != log && SYS_TRUE.equals(log.getStatus())) {
itemVO.setStatus(SYS_TRUE);
}
}
return itemVO;
}).collect(Collectors.toList()));
return vo;
}).collect(Collectors.toList());
if(popularizeVOs.size() > 0) {
return ObjectRestResponse.succ(popularizeVOs.get(0));
}else {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
}
@RequestMapping(value = "/item-add", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "完成任务")
@IgnoreClientToken
public ObjectRestResponse itemAdd(@RequestBody ItemAddDTO itemAddDTO) {
checkAppUser();
ActivityPopularize ap = popularizeBiz.selectById(itemAddDTO.getPopularizeId());
XxBizAssert.notNull(ap);
ActivityPopularizeItem item = popularizeItemBiz.selectById(itemAddDTO.getItemId());
XxBizAssert.notNull(item);
ActivityPopularizeUser activityPopularizeUser = popularizeUserBiz.selectOne(new ActivityPopularizeUser(){{
setUserId(getAppUser().getUserid());
setPopularizeId(itemAddDTO.getPopularizeId());
}});
//添加用户活动关系
if(null == activityPopularizeUser) {
activityPopularizeUser = popularizeUserBiz.insertSelectiveReT(new ActivityPopularizeUser(){{
setPopularizeId(itemAddDTO.getPopularizeId());
setUserId(getAppUser().getUserid());
setEndProgress(ap.getProgress());
}});
}
//判断是否已经添加过
ActivityPopularizeLog itemLog = BeanUtil.toBean(itemAddDTO, ActivityPopularizeLog.class);
itemLog.setUserId(getAppUser().getUserid());
XxBizAssert.isNull(popularizeLogBiz.selectOne(itemLog));
//添加活动日志
itemLog.setStatus(SYS_TRUE);
popularizeLogBiz.insertSelective(itemLog);
//更新用户活动进度
//查询 所有log
List<ActivityPopularizeLog> activityPopularizeLogs = popularizeLogBiz.selectList(new ActivityPopularizeLog(){{
setUserId(getAppUser().getUserid());
setPopularizeId(ap.getId());
setStatus(SYS_TRUE);
}});
Integer progress = 0;
String itemsContent;
for(ActivityPopularizeLog al : activityPopularizeLogs){
ActivityPopularizeItem item1 = popularizeItemBiz.selectById(al.getItemId());
progress += item1.getProgress();
}
activityPopularizeUser.setCurrentProgress(progress);
popularizeUserBiz.updateSelectiveById(activityPopularizeUser);
return ObjectRestResponse.succ();
}
@RequestMapping(value = "/app/unauth/relation-list", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询该活动邀请的好友")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse<PopularizeVO> relationList(String code) {
checkAppUser();
// ActivityPopularize activityPopularize = popularizeBiz.selectOne(new ActivityPopularize(){{
// setCode(code);
// }});
// activityPopularize.get
return ObjectRestResponse.succ();
}
} }
\ No newline at end of file
package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityPopularizeRelationBiz;
import com.xxfc.platform.activity.entity.ActivityPopularizeRelation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("activityPopularizeRelation")
public class ActivityPopularizeRelationController extends BaseController<ActivityPopularizeRelationBiz,ActivityPopularizeRelation> {
}
\ No newline at end of file
...@@ -10,6 +10,8 @@ import io.swagger.annotations.ApiOperation; ...@@ -10,6 +10,8 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
@RestController @RestController
@RequestMapping("user") @RequestMapping("user")
public class UserCouponController extends ActivityBaseController<UserCouponBiz> { public class UserCouponController extends ActivityBaseController<UserCouponBiz> {
...@@ -45,13 +47,15 @@ public class UserCouponController extends ActivityBaseController<UserCouponBiz> ...@@ -45,13 +47,15 @@ public class UserCouponController extends ActivityBaseController<UserCouponBiz>
@ApiOperation("优惠卷使用") @ApiOperation("优惠卷使用")
@RequestMapping(value = "/use", method = RequestMethod.POST) @RequestMapping(value = "/use", method = RequestMethod.POST)
public ObjectRestResponse use( public BigDecimal use(
@RequestParam(value = "userId",defaultValue ="0" ) Integer userId, @RequestParam(value = "userId",defaultValue ="0" ) Integer userId,
@RequestParam(value = "TickerNo",defaultValue ="" ) String TickerNo, @RequestParam(value = "TickerNo",defaultValue ="" ) String TickerNo,
@RequestParam(value = "orderNo",defaultValue ="" ) String orderNo @RequestParam(value = "orderNo",defaultValue ="" ) String orderNo,
@RequestParam(value = "channel",defaultValue ="1" ) Integer channel,
@RequestParam(value = "amout",defaultValue ="0.00" ) BigDecimal amout,
@RequestParam(value = "type",defaultValue ="1" ) Integer type
) { ) {
baseBiz.useTickerNo(userId,TickerNo,orderNo); return baseBiz.useTickerNo(userId,TickerNo,orderNo,channel,amout,type);
return ObjectRestResponse.succ();
} }
@ApiOperation("优惠卷取消使用") @ApiOperation("优惠卷取消使用")
......
...@@ -46,7 +46,8 @@ public class WebConfiguration implements WebMvcConfigurer { ...@@ -46,7 +46,8 @@ public class WebConfiguration implements WebMvcConfigurer {
private ArrayList<String> getIncludePathPatterns() { private ArrayList<String> getIncludePathPatterns() {
ArrayList<String> list = new ArrayList<>(); ArrayList<String> list = new ArrayList<>();
String[] urls = { String[] urls = {
"/cofig/**" "/cofig/**",
"/buyVehicleForm/**"
}; };
Collections.addAll(list, urls); Collections.addAll(list, urls);
return list; return list;
......
...@@ -29,7 +29,7 @@ public class BuyVehicleFormController extends BaseController<BuyVehicleFormBiz,B ...@@ -29,7 +29,7 @@ public class BuyVehicleFormController extends BaseController<BuyVehicleFormBiz,B
@RequestMapping(value = "form-add",method = RequestMethod.POST) @RequestMapping(value = "form-add",method = RequestMethod.POST)
@IgnoreClientToken @IgnoreClientToken
@ResponseBody @ResponseBody
public ObjectRestResponse<BuyVehicleForm> formAdd(@RequestBody BuyVehicleForm entity){ public ObjectRestResponse formAdd(@RequestBody BuyVehicleForm entity){
checkAppUser(); checkAppUser();
entity.setUserId(getAppUser().getUserid()); entity.setUserId(getAppUser().getUserid());
baseBiz.insertSelective(entity); baseBiz.insertSelective(entity);
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
<artifactId>xx-common-platform-web</artifactId> <artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version> <version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath> <relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
<relativePath/>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId> <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 @@ ...@@ -57,6 +57,10 @@
<artifactId>mybatis-spring-boot-starter</artifactId> <artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.4</version> <version>1.3.4</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>pagehelper-spring-boot-starter</artifactId>
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
</dependencies> </dependencies>
<build> <build>
<finalName>xx-im</finalName>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
...@@ -29,10 +29,6 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> { ...@@ -29,10 +29,6 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
* @return * @return
*/ */
public ObjectRestResponse getList(QuestionParamDto questionParamDto) { 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); Query query = new Query(questionParamDto);
PageDataVO pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getQuestionList(query.getSuper())); PageDataVO pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getQuestionList(query.getSuper()));
return new ObjectRestResponse<>().data(pageDataVO); return new ObjectRestResponse<>().data(pageDataVO);
......
...@@ -6,6 +6,7 @@ import cn.hutool.core.bean.copier.CopyOptions; ...@@ -6,6 +6,7 @@ import cn.hutool.core.bean.copier.CopyOptions;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; 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.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.im.dto.CommentVo; import com.xxfc.platform.im.dto.CommentVo;
import com.xxfc.platform.im.dto.PraiseVo; import com.xxfc.platform.im.dto.PraiseVo;
...@@ -44,9 +45,7 @@ public class MsgBiz { ...@@ -44,9 +45,7 @@ public class MsgBiz {
public ObjectRestResponse getMsgList(Integer page, Integer limit, Integer type) throws Exception { public ObjectRestResponse getMsgList(Integer page, Integer limit, Integer type) throws Exception {
//获取所有朋友圈 //获取所有朋友圈
AppUserDTO appUserDTO = userBiz.getUserInfo(); AppUserDTO appUserDTO = userBiz.getUserInfo();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
log.info("获取消息列表: page = {}, limit = {}, type = {}", page, limit, type); log.info("获取消息列表: page = {}, limit = {}, type = {}", page, limit, type);
page = page == null ? 1 : page; page = page == null ? 1 : page;
limit = limit == null ? 10 : limit; limit = limit == null ? 10 : limit;
...@@ -55,7 +54,12 @@ public class MsgBiz { ...@@ -55,7 +54,12 @@ public class MsgBiz {
List<Msg> msgList = null; List<Msg> msgList = null;
if (type != null) { if (type != null) {
query = new Query(Criteria.where("body.type").is(type)); 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)); PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo); return ObjectRestResponse.succ(goodPageInfo);
} else { } else {
...@@ -63,7 +67,8 @@ public class MsgBiz { ...@@ -63,7 +67,8 @@ public class MsgBiz {
ids.add(2); ids.add(2);
ids.add(4); ids.add(4);
query = new Query(Criteria.where("body.type").in(ids)); 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)); PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo); return ObjectRestResponse.succ(goodPageInfo);
} }
...@@ -89,14 +94,21 @@ public class MsgBiz { ...@@ -89,14 +94,21 @@ public class MsgBiz {
//获取所有朋友圈 //获取所有朋友圈
AppUserDTO appUserDTO = userBiz.getUserInfo(); AppUserDTO appUserDTO = userBiz.getUserInfo();
if (appUserDTO == null) { if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid"); appUserDTO = new AppUserDTO();
} }
if(id == null) { if(id == null) {
return ObjectRestResponse.paramIsEmpty(); return ObjectRestResponse.paramIsEmpty();
} }
List<Msg> msgList = null;
Query query = new Query(Criteria.where("id").is(new ObjectId(id))); Query query = new Query(Criteria.where("id").is(new ObjectId(id)));
List<Msg> msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid()); if (appUserDTO != null) {
List<MsgVo> msgVoList = replaceMsgResult(msgList); 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) { if(msgVoList.size() > 0) {
return ObjectRestResponse.succ(msgVoList.get(0)); return ObjectRestResponse.succ(msgVoList.get(0));
} }
...@@ -111,9 +123,6 @@ public class MsgBiz { ...@@ -111,9 +123,6 @@ public class MsgBiz {
* @return * @return
*/ */
private List<Msg> fetchAndAttach(List<Msg> list, Integer userId) { private List<Msg> fetchAndAttach(List<Msg> list, Integer userId) {
if (userId == null) {
return new ArrayList<>();
}
for (Msg msg : list) { for (Msg msg : list) {
//添加评论 //添加评论
Query query = new Query(Criteria.where("msgId").is(msg.getId())); Query query = new Query(Criteria.where("msgId").is(msg.getId()));
...@@ -162,9 +171,12 @@ public class MsgBiz { ...@@ -162,9 +171,12 @@ public class MsgBiz {
MsgVo msgVo = new MsgVo(); MsgVo msgVo = new MsgVo();
BeanUtil.copyProperties(msg, msgVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true)); BeanUtil.copyProperties(msg, msgVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像 //添加用户昵称和头像
msgVo.setNickname("李晓雨"); ImiVo imiVo = userBiz.getUserInfo(msg.getUserId());
msgVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png"); if(imiVo != null) {
String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString()); msgVo.setNickname(imiVo.getNickname());
msgVo.setPicUrl(imiVo.getHeadimgurl());
}
String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString());
msgVo.setAddress(address); msgVo.setAddress(address);
msgVo.setMsgId(msg.getId().toString()); msgVo.setMsgId(msg.getId().toString());
msgVoList.add(msgVo); msgVoList.add(msgVo);
...@@ -178,8 +190,11 @@ public class MsgBiz { ...@@ -178,8 +190,11 @@ public class MsgBiz {
PraiseVo praiseVo = new PraiseVo(); PraiseVo praiseVo = new PraiseVo();
BeanUtil.copyProperties(praise, praiseVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true)); BeanUtil.copyProperties(praise, praiseVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像 //添加用户昵称和头像
praiseVo.setNickname("李晓雨"); ImiVo imiVo = userBiz.getUserInfo(praise.getUserId());
praiseVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png"); if(imiVo != null) {
praiseVo.setNickname(imiVo.getNickname());
praiseVo.setPicUrl(imiVo.getHeadimgurl());
}
praiseVoArrayList.add(praiseVo); praiseVoArrayList.add(praiseVo);
} }
return praiseVoArrayList; return praiseVoArrayList;
...@@ -191,8 +206,11 @@ public class MsgBiz { ...@@ -191,8 +206,11 @@ public class MsgBiz {
CommentVo commentVo = new CommentVo(); CommentVo commentVo = new CommentVo();
BeanUtil.copyProperties(comment, commentVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true)); BeanUtil.copyProperties(comment, commentVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像 //添加用户昵称和头像
commentVo.setNickname("李晓雨"); ImiVo imiVo = userBiz.getUserInfo(comment.getUserId());
commentVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png"); if(imiVo != null) {
commentVo.setNickname(imiVo.getNickname());
commentVo.setPicUrl(imiVo.getHeadimgurl());
}
commentVoList.add(commentVo); commentVoList.add(commentVo);
} }
return commentVoList; return commentVoList;
......
...@@ -3,6 +3,7 @@ package com.xxfc.platform.im.biz; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.im.biz;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; 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.github.wxiaoqi.security.common.msg.BaseResponse;
import com.xxfc.platform.im.model.User; import com.xxfc.platform.im.model.User;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -203,4 +204,9 @@ public class UserBiz { ...@@ -203,4 +204,9 @@ public class UserBiz {
return null; return null;
} }
public ImiVo getUserInfo(Integer imId) {
ImiVo imiVo = userFeign.findUserInfoByImiId(imId);
return imiVo;
}
} }
...@@ -18,7 +18,7 @@ public class ImCommentController { ...@@ -18,7 +18,7 @@ public class ImCommentController {
@PostMapping(value = "/add") @PostMapping(value = "/add")
@ApiOperation(value = "添加评论") @ApiOperation(value = "添加评论")
public ObjectRestResponse add(@RequestBody ImComment imComment) { public ObjectRestResponse add( ImComment imComment) {
return imCommentBiz.add(imComment); return imCommentBiz.add(imComment);
} }
......
...@@ -18,7 +18,7 @@ public class ImPraiseController { ...@@ -18,7 +18,7 @@ public class ImPraiseController {
@PostMapping(value = "/add") @PostMapping(value = "/add")
@ApiOperation(value = "添加点赞") @ApiOperation(value = "添加点赞")
public ObjectRestResponse add(@RequestBody ImPraiseDto imPraise) { public ObjectRestResponse add( ImPraiseDto imPraise) {
return imPraiseBiz.add(imPraise); return imPraiseBiz.add(imPraise);
} }
......
...@@ -10,6 +10,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; ...@@ -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.IntervalUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.google.common.collect.Lists; 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.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum; import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum;
...@@ -82,6 +83,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -82,6 +83,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
@Autowired @Autowired
UserFeign userFeign; UserFeign userFeign;
@Autowired
OrderMsgBiz orderMsgBiz;
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){ public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){
return mapper.pageByParm(paramMap); return mapper.pageByParm(paramMap);
} }
...@@ -214,6 +218,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -214,6 +218,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
//退款流程 //退款流程
rentRefundProcess(hasUpdateOrder, orvd.getDeposit(), timeLag, APP_ORDER+ "_"+ RENT_REFUND); 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())) { }else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{ OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
setOrderId(baseOrder.getId()); setOrderId(baseOrder.getId());
...@@ -252,7 +265,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -252,7 +265,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
throw new BaseException(ResultCode.FAILED_CODE); throw new BaseException(ResultCode.FAILED_CODE);
} }
} }
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) { }else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{ OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
setOrderId(baseOrder.getId()); setOrderId(baseOrder.getId());
...@@ -460,51 +472,24 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -460,51 +472,24 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
try { try {
this.updateSelectiveByIdRe(updateOrder); this.updateSelectiveByIdRe(updateOrder);
}finally { }finally {
OrderTypeEnum orderTypeEnum = OrderTypeEnum.codeAndDesc.get(baseOrder.getType());
AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData(); AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData();
Integer smstype;
List<String> smsParams = new ArrayList<String>(); //处理App用户提醒短信的发送
smsParams.add(baseOrder.getRealAmount().toString()); //orderMsgBiz.handelAppUserMsg(orvd, omd, baseOrder, appUserDTO);
switch (orderTypeEnum) {
case RENT_VEHICLE: //处理后台用户提醒短信的发送
if(orvd.getFreeDays() > 0) { orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_PAY);
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;
}
} }
} else { } else {
log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo); log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo);
} }
} }
/**
* 更新(不成功抛异常)
* @param baseOrder
* @return
*/
public BaseOrder updateSelectiveByIdReT(BaseOrder baseOrder) { public BaseOrder updateSelectiveByIdReT(BaseOrder baseOrder) {
if(updateSelectiveByIdRe(baseOrder) > 0) { if(updateSelectiveByIdRe(baseOrder) > 0) {
return selectById(baseOrder.getId()); 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
...@@ -11,6 +11,7 @@ import com.github.wxiaoqi.security.common.context.BaseContextHandler; ...@@ -11,6 +11,7 @@ import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.OrderCostDetailBiz; import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz; import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz; import com.xxfc.platform.order.biz.OrderTemplateBiz;
...@@ -22,9 +23,11 @@ import com.xxfc.platform.order.pojo.order.RentVehicleBO; ...@@ -22,9 +23,11 @@ import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO; import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign; 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.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign; import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO; import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -34,8 +37,10 @@ import javax.annotation.PostConstruct; ...@@ -34,8 +37,10 @@ import javax.annotation.PostConstruct;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import static com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum.*; 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.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER; import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
...@@ -67,6 +72,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -67,6 +72,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
@Autowired @Autowired
ThirdFeign thirdFeign; ThirdFeign thirdFeign;
@Autowired
ActivityFeign activityFeign;
@PostConstruct @PostConstruct
public void init(){ public void init(){
this.orderTypeEnum = OrderTypeEnum.RENT_VEHICLE; this.orderTypeEnum = OrderTypeEnum.RENT_VEHICLE;
...@@ -83,6 +91,24 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -83,6 +91,24 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
initDictionary(); initDictionary();
VehicleModel vehicleModel = vehicleFeign.get(bo.getModelId()).getData(); VehicleModel vehicleModel = vehicleFeign.get(bo.getModelId()).getData();
bo.setVehicleModel(vehicleModel); 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() { public void initDictionary() {
...@@ -190,6 +216,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -190,6 +216,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//优惠券处理 //优惠券处理
//待完成 //待完成
// activityFeign.use(dto.getUserid(),);
//如果有使用会员权益或者优惠券,则设置订单已优惠 //如果有使用会员权益或者优惠券,则设置订单已优惠
if(SYS_TRUE.equals(detail.getOrder().getHasMemberRight())) { if(SYS_TRUE.equals(detail.getOrder().getHasMemberRight())) {
......
...@@ -193,6 +193,10 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To ...@@ -193,6 +193,10 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
//人数 * 天数 * 价格 //人数 * 天数 * 价格
insureAmount = insureAmount.add(INSURE_PRICE.multiply(new BigDecimal(String.valueOf(detail.getTotalNumber() * detail.getTourGood().getNumber())))); insureAmount = insureAmount.add(INSURE_PRICE.multiply(new BigDecimal(String.valueOf(detail.getTotalNumber() * detail.getTourGood().getNumber()))));
} }
//优惠券处理
//待完成
//总价 //总价
tourAmount = tourAmount.add(tourSpePriceVo.getTotalPrice()).add(tourSpePriceVo.getTotalChildPrice()); tourAmount = tourAmount.add(tourSpePriceVo.getTotalPrice()).add(tourSpePriceVo.getTotalChildPrice());
//商品价格 //商品价格
......
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 @@ ...@@ -21,6 +21,7 @@
</dependencies> </dependencies>
<build> <build>
<finalName>xx-tour</finalName>
<plugins> <plugins>
<!-- 此插件用来生成通用mapper的代码 --> <!-- 此插件用来生成通用mapper的代码 -->
<plugin> <plugin>
......
package com.xxfc.platform.universal.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/3 17:51
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ImgDTO {
@ApiModelProperty("图片base64")
private String imgFile;
@ApiModelProperty("图片名称")
private String fileName;
@ApiModelProperty("图片类型:jpg,png")
private String type;
}
...@@ -12,11 +12,26 @@ import lombok.Data; ...@@ -12,11 +12,26 @@ import lombok.Data;
*/ */
@Data @Data
public class SmsTemplateDTO { public class SmsTemplateDTO {
//客户通知
public static final int RENT_NORMAL = 1; public static final int RENT_NORMAL = 1;
public static final int RENT_MEMENT = 2; public static final int RENT_MEMENT = 2;
public static final int TOUR = 3; public static final int TOUR = 3;
public static final int MEMENT = 4; 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-加入会员通知 //类型:1-租车订单通知(普通用户),2-租车订单短信(会员权益),3-旅游订单短信,4-加入会员通知
private Integer type; private Integer type;
//手机号码(多个短信逗号隔开) //手机号码(多个短信逗号隔开)
......
package com.xxfc.platform.universal.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/3 17:51
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UploadImgDTO {
@ApiModelProperty("路径前缀")
private String prefix;
@ApiModelProperty("图片")
private List<ImgDTO> imgs;
}
...@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
* @description 区域码 接口 * @description 区域码 接口
* @data 2019/7/3 20:00 * @data 2019/7/3 20:00
*/ */
@FeignClient(value = "xx-universal",contextId = "region") @FeignClient(value = "xx-universal", contextId = "region")
public interface RegionFeign { public interface RegionFeign {
/** /**
......
...@@ -23,7 +23,7 @@ import java.util.Map; ...@@ -23,7 +23,7 @@ import java.util.Map;
* @author wanghaobin * @author wanghaobin
* @create 2017-06-21 8:11 * @create 2017-06-21 8:11
*/ */
@FeignClient(value = "xx-universal") @FeignClient(value = "xx-universal", contextId = "universal-base")
public interface ThirdFeign { public interface ThirdFeign {
@RequestMapping(value = "/sms/app/unauth/send", method = RequestMethod.GET) @RequestMapping(value = "/sms/app/unauth/send", method = RequestMethod.GET)
public JSONObject send(@RequestParam(value = "phone") String phone); public JSONObject send(@RequestParam(value = "phone") String phone);
...@@ -32,7 +32,7 @@ public interface ThirdFeign { ...@@ -32,7 +32,7 @@ public interface ThirdFeign {
public JSONObject sendCode(@RequestParam("phone") String phone, @RequestParam("code")String code, @RequestParam("templateCode")String templateCode ); public JSONObject sendCode(@RequestParam("phone") String phone, @RequestParam("code")String code, @RequestParam("templateCode")String templateCode );
//云通讯短信机 //云通讯短信机
@RequestMapping(value = "/sms/app/unauth/sendTemplate", method = RequestMethod.POST) @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) @RequestMapping(value = "/file/app/unauth/uploadFiles", method = RequestMethod.POST)
public JSONObject uploadFiles(@RequestParam(value = "files") MultipartFile[] files); public JSONObject uploadFiles(@RequestParam(value = "files") MultipartFile[] files);
@RequestMapping(value = "/pay/app/wx", method = RequestMethod.POST) @RequestMapping(value = "/pay/app/wx", method = RequestMethod.POST)
...@@ -64,11 +64,9 @@ public interface ThirdFeign { ...@@ -64,11 +64,9 @@ public interface ThirdFeign {
/***************************************** 数据字典 ********************************************/ /***************************************** 数据字典 ********************************************/
// @GetMapping(value = "/dictionary/getParents")
@RequestMapping(value = "/dictionary/getParents", method = RequestMethod.GET) @RequestMapping(value = "/dictionary/getParents", method = RequestMethod.GET)
public ObjectRestResponse<List<Dictionary>> dictionaryGetParent(@RequestParam(value = "type") String type); public ObjectRestResponse<List<Dictionary>> dictionaryGetParent(@RequestParam(value = "type") String type);
// @GetMapping(value = "/dictionary/get")
@RequestMapping(value = "/dictionary/get", method = RequestMethod.GET) @RequestMapping(value = "/dictionary/get", method = RequestMethod.GET)
public ObjectRestResponse<List<Dictionary>> dictionaryGet(@RequestParam(value = "dictionary") Map<String, Object> dictionary); public ObjectRestResponse<List<Dictionary>> dictionaryGet(@RequestParam(value = "dictionary") Map<String, Object> dictionary);
......
package com.xxfc.platform.universal.utils;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import java.io.*;
;
public class ImgBase64Util {
public static void main(String[] args) {
String imgFile = "d:\\Pictures\\1.jpg";// 待处理的图片
String imgbese = getImgStr(imgFile);
System.out.println(imgbese.length());
System.out.println(imgbese);
String imgFilePath = "d:\\Pictures\\0094.jpg";// 新生成的图片
generateImage(imgbese, imgFilePath);
}
/**
* 将图片转换成Base64编码
* @param imgFile 待处理图片
* @return
*/
public static String getImgStr(String imgFile) {
// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
InputStream in = null;
byte[] data = null;
// 读取图片字节数组
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return new String(Base64.encodeBase64(data));
}
/**
* 对字节数组字符串进行Base64解码并生成图片
* @param imgStr 图片数据
* @param imgFilePath 保存图片全路径地址
* @return
*/
public static boolean generateImage(String imgStr, String imgFilePath) {
//
if (imgStr == null) // 图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpg图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
}
\ No newline at end of file
...@@ -79,12 +79,6 @@ ...@@ -79,12 +79,6 @@
<version>2.0-SNAPSHOT</version> <version>2.0-SNAPSHOT</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-admin-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>com.alipay.sdk</groupId> <groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId> <artifactId>alipay-sdk-java</artifactId>
...@@ -97,6 +91,7 @@ ...@@ -97,6 +91,7 @@
</dependencies> </dependencies>
<build> <build>
<finalName>xx-universal</finalName>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
...@@ -17,6 +17,14 @@ public class CCPRestSmsBiz{ ...@@ -17,6 +17,14 @@ public class CCPRestSmsBiz{
public static final String TEMPLATE_ID_ORDER_TOUR = "457272"; public static final String TEMPLATE_ID_ORDER_TOUR = "457272";
//加入会员通知4 //加入会员通知4
public static final String TEMPLATE_ID_MEMBER = "457273"; 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{ ...@@ -34,6 +42,18 @@ public class CCPRestSmsBiz{
case 4 : case 4 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_MEMBER); CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_MEMBER);
break; 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; package com.xxfc.platform.universal.controller;
import com.alibaba.fastjson.JSONObject; 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.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.util.result.JsonResultUtil; import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
...@@ -16,8 +17,6 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -16,8 +17,6 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("refund") @RequestMapping("refund")
public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRefund> { public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRefund> {
@RequestMapping(value = "/app/wx", method = RequestMethod.POST) //匹配的是href中的download请求 @RequestMapping(value = "/app/wx", method = RequestMethod.POST) //匹配的是href中的download请求
public JSONObject refund(@RequestBody OrderRefundVo orderRefundVo) { public JSONObject refund(@RequestBody OrderRefundVo orderRefundVo) {
try { try {
......
...@@ -3,10 +3,16 @@ package com.xxfc.platform.universal.controller; ...@@ -3,10 +3,16 @@ package com.xxfc.platform.universal.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.util.result.JsonResultUtil; import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
import com.xxfc.platform.universal.dto.ImgDTO;
import com.xxfc.platform.universal.dto.UploadImgDTO;
import com.xxfc.platform.universal.service.UploadService; import com.xxfc.platform.universal.service.UploadService;
import com.xxfc.platform.universal.utils.ImgBase64Util;
import com.xxfc.platform.universal.utils.PublicMsg; import com.xxfc.platform.universal.utils.PublicMsg;
import com.xxfc.platform.universal.vo.Ueditor; import com.xxfc.platform.universal.vo.Ueditor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -14,6 +20,11 @@ import org.springframework.web.bind.annotation.*; ...@@ -14,6 +20,11 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
...@@ -71,7 +82,8 @@ public class UploadController{ ...@@ -71,7 +82,8 @@ public class UploadController{
@RequestMapping(value = "/app/unauth/uploadFiles", method = RequestMethod.POST) @RequestMapping(value = "/app/unauth/uploadFiles", method = RequestMethod.POST)
public JSONObject uploadFiles( public JSONObject uploadFiles(
@RequestParam("files") MultipartFile[] files, @RequestParam("files") MultipartFile[] files,
@RequestParam(value = "prefix",defaultValue = "app")String prefix @RequestParam(value = "prefix",defaultValue = "app")String prefix,
HttpServletRequest request
)throws Exception { )throws Exception {
if(files!=null&&files.length>0){ if(files!=null&&files.length>0){
String urls=""; String urls="";
...@@ -98,6 +110,36 @@ public class UploadController{ ...@@ -98,6 +110,36 @@ public class UploadController{
} }
@PostMapping( value = "/app/unauth/uploads")
public JSONObject uploads(@RequestBody UploadImgDTO uploadimgDTO)throws Exception {
if (uploadimgDTO==null){
JsonResultUtil.createDefaultFail();
}
String prefix=uploadimgDTO.getPrefix();
if(StringUtils.isBlank(prefix)){
prefix="app";
}
List<ImgDTO> imgDTOS=uploadimgDTO.getImgs();
List<Map<String,Object>> list=new ArrayList<>();
if (imgDTOS.size()>0){
for (ImgDTO imgDTO:imgDTOS){
String imgbese =imgDTO.getImgFile();
String fileName =imgDTO.getFileName();
Map<String,Object> map=new HashMap<>();
if(StringUtils.isNotBlank(imgbese)){
String url=uploadService.uploadImg(imgbese,prefix);
map.put("imgUrl",url);
map.put("fileName",fileName);
list.add(map);
}
}
}
return JsonResultUtil.createSuccessResultWithObj(list);
}
//以下是图片上传的方法 //以下是图片上传的方法
@RequestMapping(value="/app/unauth/ueditor") @RequestMapping(value="/app/unauth/ueditor")
......
...@@ -3,6 +3,7 @@ package com.xxfc.platform.universal.service; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.universal.service;
import com.github.wxiaoqi.security.common.util.process.SystemConfig; import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import com.xxfc.platform.universal.constant.RedisKey; import com.xxfc.platform.universal.constant.RedisKey;
import com.xxfc.platform.universal.utils.ImgBase64Util;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormat;
...@@ -56,6 +57,37 @@ public class UploadService { ...@@ -56,6 +57,37 @@ public class UploadService {
return realFileRelPath; return realFileRelPath;
} }
/**
* 写入上传文件,返回相对路径
* @param imgFile
* @return
*/
public String uploadImg(String imgFile,String prefix) throws Exception{
//创建本日存放目录
DateTime now = DateTime.now();
String dirPathToday = "/"+prefix+ "/" + now.toString(DEFAULT_DATE_TIME_FORMATTER);
String redisNoKey = RedisKey.UPLOAD_FILE_NO_PREFIX + now.toString(DEFAULT_DATE_TIME_FORMATTER);
Long no = redisTemplate.opsForValue().increment(redisNoKey);
if(no.equals(1l)){
redisTemplate.expire(redisNoKey,1, TimeUnit.DAYS);
}
String realFileRelPath = dirPathToday;
//文件存放路径
String filePath = baseUploadPath + realFileRelPath;
File file=new File(filePath);
if(!file.exists()){
file.mkdirs();
}
realFileRelPath=filePath + "/" + no + ".jpg";
//将文件写入指定位置
ImgBase64Util.generateImage(imgFile,realFileRelPath);
realFileRelPath= SystemConfig.XXMP_URL+realFileRelPath;
return realFileRelPath;
}
/** /**
* @Method: makeFileName * @Method: makeFileName
* @Description: 生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称 * @Description: 生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称
......
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 { ...@@ -105,4 +105,18 @@ public class BranchCompany {
private Integer zoneId; private Integer zoneId;
private String phone; 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.*; ...@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.Map;
/** /**
* Created by ace on 2017/9/15. * Created by ace on 2017/9/15.
...@@ -56,9 +57,11 @@ public interface VehicleFeign { ...@@ -56,9 +57,11 @@ public interface VehicleFeign {
public List<BranchCompany> companyAll( public List<BranchCompany> companyAll(
@RequestParam(value = "dataAll")Integer dataAll, @RequestParam(value = "dataAll")Integer dataAll,
@RequestParam(value = "dataCompany")String dataCompany, @RequestParam(value = "dataCompany")String dataCompany,
@RequestParam(value = "dataZone")String dataZone); @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) @RequestMapping(value = "/user/license/one", method = RequestMethod.GET)
public RestResponse<VehicleUserLicense> one(@RequestParam(value="id",defaultValue="0")Integer id) throws Exception; public RestResponse<VehicleUserLicense> one(@RequestParam(value="id",defaultValue="0")Integer id) throws Exception;
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
</dependencies> </dependencies>
<build> <build>
<finalName>xx-vehicle</finalName>
<plugins> <plugins>
<!-- 此插件用来生成通用mapper的代码 --> <!-- 此插件用来生成通用mapper的代码 -->
<plugin> <plugin>
......
package com.xxfc.platform.vehicle.common; package com.xxfc.platform.vehicle.common;
import com.github.wxiaoqi.security.common.biz.BaseBiz; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; 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 javax.servlet.http.HttpServletRequest;
import java.util.List;
@Slf4j @Slf4j
public class BaseController<Biz extends BaseBiz> { public class BaseController<Biz extends BaseBiz> {
...@@ -12,5 +18,4 @@ public class BaseController<Biz extends BaseBiz> { ...@@ -12,5 +18,4 @@ public class BaseController<Biz extends BaseBiz> {
protected HttpServletRequest request; protected HttpServletRequest request;
@Autowired @Autowired
protected Biz baseBiz; protected Biz baseBiz;
} }
...@@ -151,4 +151,12 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> { ...@@ -151,4 +151,12 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
} }
return baseBiz.getListByUser(userDTO); 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 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