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

Merge branch 'dev'

# Conflicts:
#	xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
parents 7f912342 1854bb59
......@@ -32,24 +32,28 @@ public class ServiceAuthRestInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HandlerMethod handlerMethod = (HandlerMethod) handler;
// 配置该注解,说明不进行服务拦截
IgnoreClientToken annotation = handlerMethod.getBeanType().getAnnotation(IgnoreClientToken.class);
if (annotation == null) {
annotation = handlerMethod.getMethodAnnotation(IgnoreClientToken.class);
}
if (annotation != null) {
return super.preHandle(request, response, handler);
}
String token = request.getHeader(serviceAuthConfig.getTokenHeader());
IJWTInfo infoFromToken = serviceAuthUtil.getInfoFromToken(token);
String uniqueName = infoFromToken.getUniqueName();
for (String client : serviceAuthUtil.getAllowedClient()) {
if (client.equals(uniqueName)) {
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
// 配置该注解,说明不进行服务拦截
IgnoreClientToken annotation = handlerMethod.getBeanType().getAnnotation(IgnoreClientToken.class);
if (annotation == null) {
annotation = handlerMethod.getMethodAnnotation(IgnoreClientToken.class);
}
if (annotation != null) {
return super.preHandle(request, response, handler);
}
String token = request.getHeader(serviceAuthConfig.getTokenHeader());
IJWTInfo infoFromToken = serviceAuthUtil.getInfoFromToken(token);
String uniqueName = infoFromToken.getUniqueName();
for (String client : serviceAuthUtil.getAllowedClient()) {
if (client.equals(uniqueName)) {
return super.preHandle(request, response, handler);
}
}
throw new ClientForbiddenException("Client is Forbidden!");
} else {
return super.preHandle(request, response, handler);
}
throw new ClientForbiddenException("Client is Forbidden!");
}
}
......@@ -31,38 +31,42 @@ public class UserAuthRestInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HandlerMethod handlerMethod = (HandlerMethod) handler;
// 配置该注解,说明不进行用户拦截
IgnoreUserToken annotation = handlerMethod.getBeanType().getAnnotation(IgnoreUserToken.class);
if (annotation == null) {
annotation = handlerMethod.getMethodAnnotation(IgnoreUserToken.class);
}
String token = request.getHeader(userAuthConfig.getTokenHeader());
if (StringUtils.isEmpty(token)) {
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
if (cookie.getName().equals(userAuthConfig.getTokenHeader())) {
token = cookie.getValue();
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
// 配置该注解,说明不进行用户拦截
IgnoreUserToken annotation = handlerMethod.getBeanType().getAnnotation(IgnoreUserToken.class);
if (annotation == null) {
annotation = handlerMethod.getMethodAnnotation(IgnoreUserToken.class);
}
String token = request.getHeader(userAuthConfig.getTokenHeader());
if (StringUtils.isEmpty(token)) {
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
if (cookie.getName().equals(userAuthConfig.getTokenHeader())) {
token = cookie.getValue();
}
}
}
}
}
IJWTInfo infoFromToken = null;
try {
infoFromToken = userAuthUtil.getInfoFromToken(token);
}catch (Exception e){
if (annotation != null) {
return super.preHandle(request, response, handler);
}else {
throw e;
IJWTInfo infoFromToken = null;
try {
infoFromToken = userAuthUtil.getInfoFromToken(token);
} catch (Exception e) {
if (annotation != null) {
return super.preHandle(request, response, handler);
} else {
throw e;
}
}
BaseContextHandler.setUsername(infoFromToken.getUniqueName());
BaseContextHandler.setName(infoFromToken.getName());
BaseContextHandler.setUserID(infoFromToken.getId());
BaseContextHandler.setToken(token);
// 这里可以添加RequestType
return super.preHandle(request, response, handler);
}else {
return super.preHandle(request, response, handler);
}
BaseContextHandler.setUsername(infoFromToken.getUniqueName());
BaseContextHandler.setName(infoFromToken.getName());
BaseContextHandler.setUserID(infoFromToken.getId());
BaseContextHandler.setToken(token);
// 这里可以添加RequestType
return super.preHandle(request, response, handler);
}
@Override
......
......@@ -129,7 +129,8 @@ public class AppAuthServiceImpl implements AuthService {
if (ijwtInfo==null){
return ObjectRestResponse.createFailedResult(10009,"token失效");
}
return ObjectRestResponse.succ();
token=jwtTokenUtil.generateToken(ijwtInfo);
return ObjectRestResponse.succ(token);
}catch (Exception e){
e.printStackTrace();
return ObjectRestResponse.createFailedResult(10009,"token失效");
......
......@@ -126,7 +126,8 @@ public class AuthServiceImpl implements AuthService {
if (ijwtInfo==null){
return ObjectRestResponse.createFailedResult(10009,"token失效");
}
return ObjectRestResponse.succ();
token=jwtTokenUtil.generateToken(ijwtInfo);
return ObjectRestResponse.succ(token);
}catch (Exception e){
e.printStackTrace();
return ObjectRestResponse.createFailedResult(10009,"token失效");
......
......@@ -209,7 +209,7 @@
<artifactId>spring-boot</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
<!-- <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
<version>2.1.0.RELEASE</version>
......@@ -226,8 +226,12 @@
<artifactId>feign-core</artifactId>
<version>10.1.0</version>
<scope>compile</scope>
</dependency>-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
......
package com.github.wxiaoqi.security.common.constant;
import cn.hutool.core.date.format.FastDateFormat;
import java.time.format.DateTimeFormatter;
/**
......@@ -41,8 +43,10 @@ public class CommonConstants {
public static final String LONG_TIME = "HHmmss";
public static final String SHORT_TIME = "HHmm";
public static final String DATE_TIME_LINE = "yyyy-MM-dd HH:mm:ss";
public static final String HOUR_MINUTE = "mm:ss";
public static final DateTimeFormatter DATE_TIME_LINE_FORMATTER = DateTimeFormatter.ofPattern(DATE_TIME_LINE);
public static final DateTimeFormatter YMR_SLASH_FORMATTER = DateTimeFormatter.ofPattern(YMR_SLASH);
public static final FastDateFormat HOUR_MINUTE_FORMATTE_HUTOOL = FastDateFormat.getInstance(HOUR_MINUTE);
}
package com.github.wxiaoqi.security.common.util;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
/**
* 随机数工具
......@@ -31,10 +33,41 @@ public class RandomUtil
return String.valueOf((int) (random * num));
}
/**
* 获取随机数字集合
* @param max
* @param n
* @param set
*/
public static void randomSet(int max, int n, Set<Integer> set, int total) {
if (n > (max) || max < 0) {
return;
}
for (int i = 0; i < n; i++) {
int num = (int) (Math.random() * (max));
set.add(num);
}
int setSize = set.size();
// 如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小
if (setSize < total) {
randomSet(max, total - setSize, set, total);// 递归
}
}
public static synchronized String gencRan(){
Random ran = new Random(System.nanoTime());
double nextDouble = ran.nextDouble();
return String.valueOf(nextDouble).substring(2, 6);
}
public static void main(String[] args) {
int max = 20;
int n = 20;
Set<Integer> set = new HashSet<>();
randomSet(max, n, set, n);
for(Integer a : set) {
System.out.println(a);
}
}
}
......@@ -40,4 +40,43 @@ public class StringToolsUtil {
String REGEX_ID_CARD = "(^\\d{18}$)|(^\\d{15}$)";
return Pattern.matches(REGEX_ID_CARD, idCard);
}
public static boolean isNumer( String str){
boolean flag = false;
try{
if(StringUtils.isBlank(str)) {
flag = false;
}
Pattern regex =Pattern.compile("[0-9]*");
Matcher m = regex .matcher(str);
flag = m.matches();
}catch(Exception e){
flag = false;
}
return flag;
}
public static boolean isBigDecimal(String str) {
if (str == null || str.trim().length() == 0) {
return false;
}
char[] chars = str.toCharArray();
int sz = chars.length;
int i = (chars[0] == '-') ? 1 : 0;
if (i == sz) return false;
if (chars[i] == '.') return false;//除了负号,第一位不能为'小数点'
boolean radixPoint = false;
for (; i < sz; i++) {
if (chars[i] == '.') {
if (radixPoint) return false;
radixPoint = true;
} else if (!(chars[i] >= '0' && chars[i] <= '9')) {
return false;
}
}
return true;
}
}
......@@ -92,6 +92,8 @@ public class AccessGatewayFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange serverWebExchange, GatewayFilterChain gatewayFilterChain) {
log.error("请求进入:AccessGatewayFilter");
log.info("check token and user permission....");
LinkedHashSet requiredAttribute = serverWebExchange.getRequiredAttribute(ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR);
ServerHttpRequest request = serverWebExchange.getRequest();
......
......@@ -74,7 +74,7 @@ private static final ExchangeStrategies STRATEGIES;
@Override
public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {
log.error("请求进入:ResponseRecordFilter");
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Content-Type", "application/json");
ResponseAdapter responseAdapter = new ResponseAdapter(body, httpHeaders);
......
......@@ -31,10 +31,7 @@ public class WalletJobHandler extends IJobHandler {
XxlJobLogger.log("-----定时器进入---walletHandler---");
log.info("-----定时器进入---walletHandler---");
myWaterBiz.updTodayAmount();
ReturnT returnT = new ReturnT();
returnT.setCode(100);
returnT.setMsg("成功");
return returnT;
return ReturnT.SUCCESS;
} catch (Exception e) {
XxlJobLogger.log(e);
return FAIL;
......
......@@ -16,8 +16,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
......
......@@ -10,9 +10,9 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://10.5.52.4:3306/xxfc_order?useUnicode=true&characterEncoding=UTF-8
url: jdbc:mysql://10.5.52.4:3307/xxfc_uccn?useUnicode=true&characterEncoding=UTF-8
username: root
password: e4549e9315f19a88
password: sslcloud123*()
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
......
#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F
#\u5305\u540D
package=com.xxfc.platform.order
package=com.xxfc.platform.uccn
#\u4F5C\u8005
author=zjw
author=libin
#Email
email=18178966185@163.com
#\u8868\u524D\u9519\u8BEF\u7684Unicode\u5B57\u7B26\u4E32!
......
......@@ -46,6 +46,7 @@
<module>xx-campsite</module>
<module>xx-activity</module>
<module>xx-user-behavior-collect</module>
<module>xx-uccn</module>
</modules>
<packaging>pom</packaging>
<developers>
......@@ -101,7 +102,7 @@
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.1.RELEASE</version>
<version>0.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
......
......@@ -6,7 +6,6 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
......@@ -105,4 +105,9 @@ public class Banner {
* 位置 banner位置0 所有 1:推荐 2:拍拍 3:短视频 4:问答
*/
private Integer location;
/**
* 平台 0:APP 1:欣欣房车官网 2:滴房车官网
*/
private Integer platform;
}
......@@ -6,7 +6,6 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
......@@ -21,20 +21,9 @@ import java.util.List;
@Service
public class BannerBiz extends BaseBiz<BannerMapper,Banner> {
/* @CacheClear(key = RedisKey.CONSTANT_CODE_PREFIX_BANNER)
public void update(Banner banner) {
this.updateSelectiveById(banner);
}
@CacheClear(key = RedisKey.CONSTANT_CODE_PREFIX_BANNER)
public void remove(int id) {
this.deleteById(id);
}*/
public List<BannerVo> findBannerList(Integer type,Integer location) {
public List<BannerVo> findBannerList(Integer type,Integer location,Integer platform) {
List<BannerVo> bannerVos = new ArrayList<>();
List<Banner> banners = mapper.findBannerListByType(type,location);
List<Banner> banners = mapper.findBannerListByType(type,location,platform);
banners.forEach(banner -> {
BannerVo bannerVo = new BannerVo();
bannerVo.setCover(banner.getCover());
......@@ -46,30 +35,14 @@ public class BannerBiz extends BaseBiz<BannerMapper,Banner> {
return bannerVos;
}
/*
*/
/**
* 更改banner信息
* @param banner
* @param userInfo
* @return
*//*
public int update(Banner banner, UserDTO userInfo) {
banner.setUpdName(userInfo.getUsername());
banner.setUpdTime(Instant.now().toEpochMilli());
return mapper.updateByPrimaryKeySelective(banner);
}
*/
/**
* 分页查询banner
* @param pageNo
* @param pageSize
* @return
*/
public PageDataVO<Banner> findBannePage(Integer pageNo, Integer pageSize) {
return PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.findBannerListByisDelOrderByRank(Banner.builder().isDel(0).build()));
public PageDataVO<Banner> findBannePage(Integer pageNo, Integer pageSize,Integer platform) {
return PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.findBannerListByisDelOrderByRank(Banner.builder().isDel(0).platform(platform).build()));
}
/**
......
......@@ -19,10 +19,10 @@ import java.util.List;
@Repository
public interface BannerMapper extends Mapper<Banner> {
@Select("select * from `banner` where is_del=#{isDel} order by rank ASC")
@Select("select * from `banner` where is_del=#{isDel} and `platform`=#{platform} order by rank ASC")
List<Banner> findBannerListByisDelOrderByRank(Banner banner);
List<Banner> findBannerListByType(@Param("type") Integer type,@Param("location") Integer location);
List<Banner> findBannerListByType(@Param("type") Integer type,@Param("location") Integer location,@Param("platform") Integer platform);
}
......@@ -21,19 +21,22 @@ import java.util.List;
@RequestMapping("/banner")
public class BannerController {
@Autowired
private BannerBiz bannerBiz;
@Autowired
private BannerBiz bannerBiz;
/**
*查询banner图
* 查询banner图
*
* @return
*/
@GetMapping("/app/unauth/findBannerlist")
public ObjectRestResponse findBannerlist(@RequestParam("type") Integer type,@RequestParam(required = false,value = "location") Integer location){
if (type==null) {
public ObjectRestResponse findBannerlist(@RequestParam(value = "type") Integer type,
@RequestParam(required = false, value = "location") Integer location,
@RequestParam(value = "platform",required = false,defaultValue = "0") Integer platform) {
if (type == null) {
return ObjectRestResponse.createDefaultFail();
}
List<BannerVo> bannerList = bannerBiz.findBannerList(type,location);
return ObjectRestResponse.succ(bannerList);
List<BannerVo> bannerList = bannerBiz.findBannerList(type, location,platform);
return ObjectRestResponse.succ(bannerList);
}
}
......@@ -21,22 +21,23 @@ import org.springframework.web.bind.annotation.*;
*/
@RestController
@RequestMapping("/admin/banner")
@Api(value = "banner后台接口",tags = "banner后台接口")
@Api(value = "banner后台接口", tags = "banner后台接口")
public class BannerAdminController {
@Autowired
private BannerBiz bannerBiz;
@Autowired
private BannerBiz bannerBiz;
/**
* 修改
*
* @param banner
* @return
*/
@PutMapping
@ApiOperation(value = "banner修改",notes = "修改")
public ObjectRestResponse<Banner> update(@RequestBody Banner banner, UserDTO userInfo){
int effectRows = bannerBiz.save(banner,userInfo);
if (effectRows>0){
@ApiOperation(value = "banner修改", notes = "修改")
public ObjectRestResponse<Banner> update(@RequestBody Banner banner, UserDTO userInfo) {
int effectRows = bannerBiz.save(banner, userInfo);
if (effectRows > 0) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
......@@ -44,47 +45,51 @@ public class BannerAdminController {
/**
* 根据id查询banner
*
* @param id
* @return
*/
@GetMapping("/{id}")
@ApiOperation(value = "根据id查询banner图",notes = "根据id查询banner图")
public ObjectRestResponse<Banner> findBannerById(@PathVariable Integer id){
@ApiOperation(value = "根据id查询banner图", notes = "根据id查询banner图")
public ObjectRestResponse<Banner> findBannerById(@PathVariable Integer id) {
Banner Banner = bannerBiz.selectById(id);
return ObjectRestResponse.succ(Banner);
}
/**
* 分页查询banner
*
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/page")
@ApiOperation(value = "banner分页查询",notes = "banner分页查询")
@ApiOperation(value = "banner分页查询", notes = "banner分页查询")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "pageNo",paramType = "query",required = false,dataType = "integer",defaultValue = "0"),
@ApiImplicitParam(name = "pageSize",paramType = "query",required = false,dataType = "integer",defaultValue = "10")
@ApiImplicitParam(name = "pageNo", paramType = "query", required = false, dataType = "integer", defaultValue = "0"),
@ApiImplicitParam(name = "pageSize", paramType = "query", required = false, dataType = "integer", defaultValue = "10")
})
public ObjectRestResponse<PageDataVO> findBannerPage(@RequestParam(name = "pageNo",defaultValue = "0",required = false) Integer pageNo,
@RequestParam(name = "pageSize",defaultValue = "10",required = false) Integer pageSize){
public ObjectRestResponse<PageDataVO> findBannerPage(@RequestParam(name = "pageNo", defaultValue = "0", required = false) Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10", required = false) Integer pageSize,
@RequestParam(name = "platform", defaultValue = "0", required = false) Integer platform) {
PageDataVO<Banner> pageDataVO = bannerBiz.findBannePage(pageNo,pageSize);
PageDataVO<Banner> pageDataVO = bannerBiz.findBannePage(pageNo, pageSize, platform);
return ObjectRestResponse.succ(pageDataVO);
}
/**
* 保存banner
*
* @param banner
* @return
*/
@ApiOperation(value = "banner保存",notes = "banner保存")
@ApiOperation(value = "banner保存", notes = "banner保存")
@PostMapping
public ObjectRestResponse<Void> saveBanner(@RequestBody Banner banner,UserDTO userDTO){
public ObjectRestResponse<Void> saveBanner(@RequestBody Banner banner, UserDTO userDTO) {
banner.setIsDel(0);
int effectRows = bannerBiz.save(banner,userDTO);
if (effectRows>0){
int effectRows = bannerBiz.save(banner, userDTO);
if (effectRows > 0) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
......@@ -93,14 +98,15 @@ public class BannerAdminController {
/**
* 逻辑删除
*
* @param id
* @return
*/
@DeleteMapping("/{id}")
@ApiOperation(value = "banner逻辑删除",notes = "banner逻辑删除")
public ObjectRestResponse<Void> deleteBannerById(@PathVariable Integer id,UserDTO userDTO){
int effectRows = bannerBiz.updateBannerStatus(id,1,userDTO);
if (effectRows>0){
@ApiOperation(value = "banner逻辑删除", notes = "banner逻辑删除")
public ObjectRestResponse<Void> deleteBannerById(@PathVariable Integer id, UserDTO userDTO) {
int effectRows = bannerBiz.updateBannerStatus(id, 1, userDTO);
if (effectRows > 0) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
......@@ -108,11 +114,12 @@ public class BannerAdminController {
/**
* 真实删除
*
* @param id
* @return
*/
@DeleteMapping("/del/{id}")
public ObjectRestResponse<Void> deleteReallyBannerById(@PathVariable(value = "id") Integer id){
public ObjectRestResponse<Void> deleteReallyBannerById(@PathVariable(value = "id") Integer id) {
bannerBiz.deleteById(id);
return ObjectRestResponse.succ();
}
......
......@@ -15,6 +15,7 @@
<result property="url" column="url"/>
<result property="isDel" column="is_del"/>
<result property="location" column="location"/>
<result property="platform" column="platform"/>
</resultMap>
<select id="findBannerListByType" resultMap="bannerMap">
......@@ -22,6 +23,9 @@
<if test="location != null">
and `location`=#{location}
</if>
<if test="platform != null">
and `platform`=#{platform}
</if>
order by rank asc
</select>
</mapper>
\ No newline at end of file
......@@ -6,7 +6,6 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
package com.xxfc.platform.campsite.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description 公众号
* @data 2019/8/22 14:07
*/
@Data
public class CampsiteShopFindDTO extends PageParam {
private Integer addrProvince;
private Integer addrCity;
private Integer type;
}
......@@ -98,6 +98,9 @@ public class CampsiteShopPageDTO implements Serializable {
@ApiModelProperty("地址")
private String address;
@ApiModelProperty("联系人")
private String concat;
@Override
public boolean equals(Object o) {
if (this == o) {
......
package com.xxfc.platform.campsite.feign;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.GoodDataVO;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.campsite.vo.CampsiteShopDetailVo;
import com.xxfc.platform.campsite.vo.CampsiteShopPageVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -13,12 +17,31 @@ import java.util.List;
* Created by ace on 2017/9/15.
*/
//@FeignClient(value = "${auth.serviceId}",configuration = {})
@FeignClient("xx-campsite")
@FeignClient(name = "xx-campsite",path = "/campsiteShop")
public interface CampsiteFeign {
@ApiOperation("首页营地列表")
@GetMapping(value = "/campsiteShop/app/shopList")
public List<GoodDataVO> goodList(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit",defaultValue = "4") Integer limit);
@GetMapping(value = "/app/shopList")
List<GoodDataVO> goodList(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit", defaultValue = "4") Integer limit);
@GetMapping(value = "/app/unauth/findRandomVehicle")
ObjectRestResponse findRandomVehicle(@RequestParam(value = "number") Integer number);
@ApiOperation("分页查询营地列表")
@GetMapping("/app/unauth/shops")
ObjectRestResponse<PageDataVO<CampsiteShopPageVo>> findCampsiteShopPageByType(@RequestParam(value = "type", required = false) Integer type,
@RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", required = false, defaultValue = "6") Integer pageSize);
/**
* @param longitude 经度
* @param latitude 纬度
* @return
*/
@ApiOperation("查询营地详情")
@GetMapping("/app/unauth/shop")
ObjectRestResponse<CampsiteShopDetailVo> findCampsiteShopDetailById(@RequestParam(value = "id") Integer id,
@RequestParam(value = "longitude", required = false) Double longitude,
@RequestParam(value = "latitude", required = false) Double latitude);
}
package com.xxfc.platform.campsite.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......@@ -7,8 +8,6 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Table;
import java.io.Serializable;
......@@ -67,13 +66,6 @@ public class CampsiteShopPageVo implements Serializable {
@ApiModelProperty(value = "店铺类型名称")
private String storeTypeName;
/**
* 店铺类型id
*/
@ApiModelProperty(value = "店铺类型id")
private String storeId;
/**
* 经度
*/
......@@ -96,8 +88,12 @@ public class CampsiteShopPageVo implements Serializable {
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true)
@JsonIgnore
private Long crtTime;
@ApiModelProperty("联系人")
private String concat;
@ApiModelProperty(value = "電話")
private String phone;
......
......@@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Table;
import java.io.Serializable;
......
......@@ -6,7 +6,6 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
......@@ -2,6 +2,8 @@ package com.xxfc.platform.campsite.biz;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.RandomUtil;
import com.github.wxiaoqi.security.common.vo.GoodDataVO;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.campsite.dto.*;
......@@ -59,7 +61,6 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
*/
private static final String CAMPSITE_LIST_CACHE_PREKEY = "campsite_cache:";
private static final String CAMSITE_DETAIL_CACHE_PREKEY = "campsite:detail:cache:";
private static final String CAMPSITE_CACHE_ALL = "all";
private static final long CAMPSITE_CACHE_EXPIRE_TIME = 6000;
/**
......@@ -79,27 +80,27 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
}
public PageDataVO<CampsiteShopPageVo> findCampsiteShopPageByType(Integer type, Integer pageNo, Integer pageSize) {
String result;
if (Objects.isNull(type)) {
result = campHashOperations.get(CAMPSITE_LIST_CACHE_PREKEY,String.format("%s%d%d",CAMPSITE_CACHE_ALL,pageNo,pageSize));
} else {
result = campHashOperations.get(CAMPSITE_LIST_CACHE_PREKEY, String.format("%s%d%d", String.valueOf(type), pageNo, pageSize));
}
public PageDataVO<CampsiteShopPageVo> findCampsiteShopPageByType(CampsiteShopFindDTO campsiteShopFindDTO) {
String campsite_cache_key = String.format("%s%s%s%s%s", campsiteShopFindDTO.getType() == null ? "" : campsiteShopFindDTO.getType() + ":",
campsiteShopFindDTO.getAddrProvince() == null ? "" : campsiteShopFindDTO.getAddrProvince() + ":",
campsiteShopFindDTO.getAddrCity()==null?"":campsiteShopFindDTO.getAddrCity()+":",
campsiteShopFindDTO.getPage()+":",
campsiteShopFindDTO.getLimit());
String result = campHashOperations.get(CAMPSITE_LIST_CACHE_PREKEY,campsite_cache_key);
if (result != null) {
return JSONObject.parseObject(result, new TypeReference<PageDataVO<CampsiteShopPageVo>>() {
});
}
PageDataVO<CampsiteShopPageVo> campsiteShopPageDataVO = new PageDataVO<>();
PageDataVO<CampsiteShopPageDTO> pageDataVO = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.findAllCampsiteShopsByType(type));
PageDataVO<CampsiteShopPageDTO> pageDataVO = PageDataVO.pageInfo(campsiteShopFindDTO.getPage(), campsiteShopFindDTO.getLimit(), () -> mapper.findAllCampsiteShopsByTypeOrCode(campsiteShopFindDTO.getType(),campsiteShopFindDTO.getAddrProvince(),campsiteShopFindDTO.getAddrCity()));
List<CampsiteShopPageDTO> campsiteShopPageDTOS = pageDataVO.getData();
if (CollectionUtils.isEmpty(campsiteShopPageDTOS)) {
campsiteShopPageDataVO.setData(new ArrayList<CampsiteShopPageVo>());
campsiteShopPageDataVO.setData(Collections.EMPTY_LIST);
return campsiteShopPageDataVO;
}
if (log.isDebugEnabled()) {
log.debug("根据type=【{}】查询到的店铺数据:【{}】", type, campsiteShopPageDTOS);
log.debug("根据type=【{}】查询到的店铺数据:【{}】", campsiteShopFindDTO.getType(), campsiteShopPageDTOS);
}
List<CampsiteShopPageVo> campsiteShopPageVoList = new ArrayList<>();
......@@ -117,11 +118,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
campsiteShopPageDataVO.setPageNum(pageDataVO.getPageNum());
campsiteShopPageDataVO.setData(campsiteShopPageVoList);
if (Objects.isNull(type)) {
campHashOperations.put(CAMPSITE_LIST_CACHE_PREKEY, String.format("%s%d%d",CAMPSITE_CACHE_ALL,pageNo,pageSize), JSONObject.toJSONString(campsiteShopPageDataVO));
} else {
campHashOperations.put(CAMPSITE_LIST_CACHE_PREKEY, String.format("%s%d%d", String.valueOf(type), pageNo, pageSize), JSONObject.toJSONString(campsiteShopPageDataVO));
}
campHashOperations.put(CAMPSITE_LIST_CACHE_PREKEY,campsite_cache_key,JSONObject.toJSONString(campsiteShopPageDataVO));
return campsiteShopPageDataVO;
}
......@@ -167,12 +164,14 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
}
campsiteShopDetailVo.setTypeNames(shopTagDTOS == null ? Collections.EMPTY_LIST : shopTagDTOS.stream().map(CampsiteShopTagDTO::getName).collect(Collectors.toList()));
//根据经纬度算距离
if (campsiteShopDetailDTO.getLongitude()!=null && campsiteShopDetailDTO.getLatitude()!=null) {
double distance = getDistance(campsiteShopDetailDTO.getLongitude(), campsiteShopDetailDTO.getLatitude(), longitude, latitude);
if (log.isDebugEnabled()) {
log.debug("根据店铺经度=【{}】,纬度=【{}】和自己所在位置的经度=【{}】,纬度=【{}】计算出的距离:【{}km】", campsiteShopDetailDTO.getLongitude(), campsiteShopDetailDTO.getLatitude(), longitude, latitude, distance);
if(Objects.nonNull(latitude) && Objects.nonNull(longitude)) {
if (campsiteShopDetailDTO.getLongitude() != null && campsiteShopDetailDTO.getLatitude() != null) {
double distance = getDistance(campsiteShopDetailDTO.getLongitude(), campsiteShopDetailDTO.getLatitude(), longitude, latitude);
if (log.isDebugEnabled()) {
log.debug("根据店铺经度=【{}】,纬度=【{}】和自己所在位置的经度=【{}】,纬度=【{}】计算出的距离:【{}km】", campsiteShopDetailDTO.getLongitude(), campsiteShopDetailDTO.getLatitude(), longitude, latitude, distance);
}
campsiteShopDetailVo.setDistance(String.format("%.1f", distance));
}
campsiteShopDetailVo.setDistance(String.format("%.1f", distance));
}
campsiteValueOperations.set(String.format("%s%d", CAMSITE_DETAIL_CACHE_PREKEY, id), JSONObject.toJSONString(campsiteShopDetailVo));
return campsiteShopDetailVo;
......@@ -307,7 +306,6 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
}
public int upperOrLowerShelves(Integer id, Integer status) {
int effectRows = mapper.updateCampsiteSaleStatusById(id, status);
if (effectRows > 0) {
......@@ -336,6 +334,28 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
.toEpochMilli();
}
/**
* 获取指定数量的随机旅游路线
* @return
*/
public ObjectRestResponse findRandomVehicle(Integer number) {
number = number == null ? 2 : number;
List<GoodDataVO> list = mapper.findAll();
Set<GoodDataVO> resultList = new HashSet<>();
if(CollectionUtils.isNotEmpty(list)) {
if(number >= list.size()) {
return ObjectRestResponse.succ(list);
}
Set<Integer> set = new HashSet<>();
RandomUtil.randomSet(list.size(), number, set, number);
for(Integer i : set) {
resultList.add(list.get(i));
}
}
return ObjectRestResponse.succ(resultList);
}
private long transformEndTime(Long endTime) {
return LocalDateTime.ofInstant(new Date(endTime).toInstant(), ZoneOffset.ofHours(+8))
......
package com.xxfc.platform.campsite.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDetailDTO;
import com.xxfc.platform.campsite.entity.CampsiteShopCarousel;
import com.xxfc.platform.campsite.mapper.CampsiteShopCarouselMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import com.xxfc.platform.campsite.entity.CampsiteShopCarousel;
import com.xxfc.platform.campsite.mapper.CampsiteShopCarouselMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
......
......@@ -13,7 +13,7 @@ import java.util.List;
/**
* 营地店铺表
*
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-17 10:28:48
......@@ -23,20 +23,27 @@ public interface CampsiteShopMapper extends Mapper<CampsiteShop> {
/**
* 根据店铺类型查找店铺列表
*
* @param typeId
*/
List<CampsiteShopPageDTO> findAllCampsiteShopsByType(@Param("typeId") Integer typeId);
List<CampsiteShopPageDTO> findAllCampsiteShopsByTypeOrCode(@Param("typeId") Integer typeId,
@Param("proviceCode") Integer proviceCode,
@Param("cityCode") Integer cityCode);
/**
* 首页营地列表
*
* @param start
* @param size
* @return
*/
List<GoodDataVO> findAllByHome(@Param("start") Integer start, @Param("size") Integer size);
List<GoodDataVO> findAll();
/**
* 根据店铺id查询
*
* @param id
* @return
*/
......@@ -44,6 +51,7 @@ public interface CampsiteShopMapper extends Mapper<CampsiteShop> {
/**
* 根据条件查询
*
* @param campsiteShopAdminFindDTO
* @return
*/
......@@ -51,14 +59,16 @@ public interface CampsiteShopMapper extends Mapper<CampsiteShop> {
/**
* 更新店铺的状态
*
* @param id
* @param status
* @return
*/
int updateCampsiteStatusById(@Param("id") int id,@Param("status") int status);
int updateCampsiteStatusById(@Param("id") int id, @Param("status") int status);
/**
* 更新店铺的上下架状态
*
* @param id
* @param status
* @return
......@@ -67,9 +77,12 @@ public interface CampsiteShopMapper extends Mapper<CampsiteShop> {
/**
* 检验营地名称
*
* @param id
* @param name
* @return
*/
int checkNameExist(@Param("id") Integer id,@Param("name") String name);
}
......@@ -5,16 +5,13 @@ import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.vo.GoodDataVO;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.campsite.biz.CampsiteShopBiz;
import com.xxfc.platform.campsite.dto.CampsiteShopFindDTO;
import com.xxfc.platform.campsite.entity.CampsiteShop;
import com.xxfc.platform.campsite.vo.CampsiteShopDetailVo;
import com.xxfc.platform.campsite.vo.CampsiteShopPageVo;
import com.xxfc.platform.campsite.vo.CampsiteShopVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -32,10 +29,14 @@ public class CampsiteShopController extends BaseController<CampsiteShopBiz, Camp
@ApiOperation("分页查询营地列表")
@GetMapping("/app/unauth/shops")
public ObjectRestResponse<PageDataVO<CampsiteShopVo>> findCampsiteShopPageByType(@RequestParam(value = "type", required = false) Integer type,
public ObjectRestResponse<PageDataVO<CampsiteShopPageVo>> findCampsiteShopPageByType(@RequestParam(value = "type", required = false) Integer type,
@RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", required = false, defaultValue = "6") Integer pageSize) {
PageDataVO<CampsiteShopPageVo> pageDataVO = getBaseBiz().findCampsiteShopPageByType(type, pageNo, pageSize);
CampsiteShopFindDTO campsiteShopFindDTO = new CampsiteShopFindDTO();
campsiteShopFindDTO.setType(type);
campsiteShopFindDTO.setPage(pageNo);
campsiteShopFindDTO.setLimit(pageSize);
PageDataVO<CampsiteShopPageVo> pageDataVO = getBaseBiz().findCampsiteShopPageByType(campsiteShopFindDTO);
return ObjectRestResponse.succ(pageDataVO);
}
......@@ -47,7 +48,9 @@ public class CampsiteShopController extends BaseController<CampsiteShopBiz, Camp
*/
@ApiOperation("查询营地详情")
@GetMapping("/app/unauth/shop")
public ObjectRestResponse<CampsiteShopDetailVo> findCampsiteShopDetailById(@RequestParam("id") Integer id, @RequestParam("longitude") Double longitude, @RequestParam("latitude") Double latitude) {
public ObjectRestResponse<CampsiteShopDetailVo> findCampsiteShopDetailById(@RequestParam(value = "id") Integer id,
@RequestParam(value = "longitude",required = false) Double longitude,
@RequestParam(value = "latitude",required = false) Double latitude) {
CampsiteShopDetailVo campsiteShopDetailVo = getBaseBiz().findCampsiteShopDetailById(id, longitude, latitude);
return ObjectRestResponse.succ(campsiteShopDetailVo);
}
......@@ -59,5 +62,16 @@ public class CampsiteShopController extends BaseController<CampsiteShopBiz, Camp
return getBaseBiz().getAllByHome(page,limit);
}
@ApiOperation("随机获取营地")
@GetMapping(value = "/app/unauth/findRandomVehicle")
public ObjectRestResponse findRandomVehicle(Integer number) {
return baseBiz.findRandomVehicle(number);
}
@PostMapping(value = "/app/unauth/webchat_official/campsites")
public ObjectRestResponse<PageDataVO<CampsiteShopPageVo>> findCampsitesForPublicNumber(@RequestBody CampsiteShopFindDTO campsiteShopFindDTO){
PageDataVO<CampsiteShopPageVo> campsiteShops = baseBiz.findCampsiteShopPageByType(campsiteShopFindDTO);
return ObjectRestResponse.succ(campsiteShops);
}
}
\ No newline at end of file
......@@ -35,16 +35,23 @@
</resultMap>
<!--根据类型查询全部-->
<select id="findAllCampsiteShopsByType" resultType="com.xxfc.platform.campsite.dto.CampsiteShopPageDTO">
<select id="findAllCampsiteShopsByTypeOrCode" resultType="com.xxfc.platform.campsite.dto.CampsiteShopPageDTO">
select cs.id as `id`,cs.name as `name`,cs.logo as `logo`,cs.url as `url`,cs.province_name as `provinceName`,cs.city_name as `cityName`,cs.service_phone as `phone`,
cs.longitude as `longitude`,cs.latitude as `latitude`,`address` as `address`,cs.hot as `hot`,cs.crt_time as `crtTime`,ct.id as `storeId`,ct.name as `storeTypeName`
cs.longitude as `longitude`,cs.latitude as `latitude`,`address` as `address`,cs.hot as `hot`,cs.crt_time as `crtTime`,cs.concat as `concat`,ct.id as `storeId`,ct.name as `storeTypeName`
FROM `campsite_shop_tag` cst
left JOIN `campsite_shop` cs on cst.shop_id=cs.id
left JOIN `campsite_tag` ct on cst.tag_id=ct.id
where cs.sale_state=1 and cs.is_del=0
<if test="typeId!=null">
and cst.tag_id=#{typeId}
</if> order by `crtTime` DESC
</if>
<if test="proviceCode != null">
and `province`=#{proviceCode}
</if>
<if test="cityCode != null">
and `city`=#{cityCode}
</if>
order by `crtTime` DESC
</select>
<!--首页查询全部-->
......@@ -56,6 +63,13 @@
limit #{start,jdbcType=INTEGER},#{size,jdbcType=INTEGER}
</select>
<select id="findAll" resultType="com.github.wxiaoqi.security.common.vo.GoodDataVO">
select cs.id as `id`,cs.name as `name`,cs.logo as `imgUrl`,cs.province_name as `name1`,cs.longitude,cs.latitude
FROM `campsite_shop` cs
where cs.sale_state=1 and cs.is_del=0
order by cs.hot desc
</select>
<!--根据id查询详情-->
<select id="findCampsiteShopDetailById" resultType="com.xxfc.platform.campsite.dto.CampsiteShopDetailDTO">
select `name` as `name`,`province_name` as `provinceName`,`city_name` as `cityName`,`address` as `address`,`service_phone` as `phone`,`logo` as `logo`,`poster_background` as `posterBackground` ,
......
......@@ -6,7 +6,6 @@
<artifactId>xx-common-platform-web</artifactId>
<groupId>com.xxfc.common</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -184,12 +184,12 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
vehicle = restResponse.getData();
}
if (vehicle == null) {
return ObjectRestResponse.createFailedResult(500, "订单车辆不存在!");
return ObjectRestResponse.createFailedResult(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getCode(), ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getDesc());
}
if( vehicle.getMileageLastUpdate() != null) {
//判断车辆公里数
if (orderVehicleCrosstownDto.getMileage() == null || orderVehicleCrosstownDto.getMileage() <= vehicle.getMileageLastUpdate()) {
return ObjectRestResponse.createFailedResult(500, "请输入车辆仪表盘实际公里数!");
return ObjectRestResponse.createFailedResult(ResCode.VEHICLE_BOOKED_RECORD_MILEAGE_CHANGED.getCode(), ResCode.VEHICLE_BOOKED_RECORD_MILEAGE_CHANGED.getDesc());
}
}
......@@ -377,7 +377,7 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
public boolean getTodayTime(Long time) {
long current = System.currentTimeMillis();
if (current <= (time / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset() )+ 24 * 60 * 60 * 1000 -1) {
if (current <= (time / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset() ) + 24 * 60 * 60 * 1000 -1) {
return true;
}
return false;
......
......@@ -162,6 +162,9 @@ public class OrderCancelBiz {
}
//退款流程
orderRefundBiz.rentRefundProcess(hasUpdateOrder, timeLag, APP_ORDER+ "_"+ key);
//站点总人数减少
tourFeign.updateTourGoodPersonNum(otd.getVerificationId(), TourFeign.TOTAL_PERSON, (otd.getTotalNumber() * -1));
}
}
......
......@@ -29,11 +29,8 @@ public class BaseOrderStatisticsJobHandler extends IJobHandler {
XxlJobLogger.log("-----定时器进入---baseOrderStatisticsHandler---");
log.info("-----定时器进入---baseOrderStatisticsHandler---");
// boolean flag = statisticsBiz.statisticalOrder();
ReturnT returnT = new ReturnT();
// if (flag) {
returnT.setCode(100);
returnT.setMsg("成功");
return returnT;
return ReturnT.SUCCESS;
// }
// else {
......
package com.xxfc.platform.order.jobhandler;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ArrayUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.order.biz.*;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
/**
* 跨平台Http任务
*
* @author xuxueli 2018-09-16 03:48:34
*/
@JobHandler(value = "remindMsgJobHandler")
@Component
@Slf4j
public class RemindMsgJobHandler extends IJobHandler {
@Autowired
BaseOrderBiz baseOrderBiz;
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderTourDetailBiz orderTourDetailBiz;
@Autowired
OrderMsgBiz orderMsgBiz;
@Autowired
ThirdFeign thirdFeign;
@Autowired
UserFeign userFeign;
@Override
public ReturnT<String> execute(String idLastNumInterval) {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Integer rentDepositAutoRefundTime = new Integer(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_DEPOSIT_AUTO_REFUND_TIME).getDetail());
try {
Date tomorrow = DateUtil.offsetDay(DateUtil.parse(DateUtil.today(), "yyyy-MM-dd"), 1);
Date tomorrowBegin = DateUtil.beginOfDay(tomorrow);
Date tomorrowEnd = DateUtil.endOfDay(tomorrow);
//检索明天需要出车的订单
List<BaseOrder> lists = baseOrderBiz.selectByExample(new Example.Builder(BaseOrder.class)
//订单已完成的租车订单
.where(WeekendSqls.<BaseOrder>custom()
.andIn(BaseOrder::getType, CollectionUtil.newArrayList(OrderTypeEnum.RENT_VEHICLE.getCode(), OrderTypeEnum.TOUR.getCode()))
.andEqualTo(BaseOrder::getStatus, OrderStatusEnum.ORDER_TOSTART.getCode()) //待出发的订单
// .andLessThanOrEqualTo(BaseOrder::getCrtTime, DateUtil.beginOfDay(tomorrow))
// .andGreaterThanOrEqualTo(BaseOrder::getCrtTime, DateUtil.endOfDay(tomorrow))
).build());
for(BaseOrder baseOrder : lists) {
AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData();
if(OrderTypeEnum.RENT_VEHICLE.getCode().equals(baseOrder.getType())) {
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectById(baseOrder.getDetailId());
DateTime startDate = DateUtil.date(orvd.getStartTime());
if(startDate.isAfterOrEquals(tomorrowBegin) && startDate.isBeforeOrEquals(tomorrowEnd)) {
orderMsgBiz.handelMsgStart(orvd, null, null, baseOrder, appUserDTO);
}
}else {
OrderTourDetail otd = orderTourDetailBiz.selectById(baseOrder.getDetailId());
DateTime startDate = DateUtil.date(otd.getStartTime());
if(startDate.isAfterOrEquals(tomorrowBegin) && startDate.isBeforeOrEquals(tomorrowEnd)) {
orderMsgBiz.handelMsgStart(null, otd, null, baseOrder, appUserDTO);
}
}
}
return ReturnT.SUCCESS;
} catch (Exception e) {
XxlJobLogger.log(e);
return FAIL;
} finally {
;
}
}
}
\ No newline at end of file
......@@ -126,11 +126,8 @@ public class RentDepositJobHandler extends IJobHandler {
}
}
ReturnT returnT = new ReturnT();
returnT.setCode(100);
returnT.setMsg("成功");
returnT.setContent(idLastNumInterval);
return returnT;
return ReturnT.SUCCESS;
} catch (Exception e) {
XxlJobLogger.log(e);
return FAIL;
......
......@@ -149,10 +149,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
}
if (StringUtils.isNotBlank(orderPageVO.getOrderRentVehicleDetail().getMyDriverIds())) {
try {
QueryMultiDTO queryMultiDTO = new QueryMultiDTO();
queryMultiDTO.setIds(orderPageVO.getOrderRentVehicleDetail().getMyDriverIds());
List<VehicleUserLicense> orderUserLicenses = vehicleFeign.multi(queryMultiDTO).getData();
List<VehicleUserLicense> orderUserLicenses = vehicleFeign.getVehicleLicenseList(orderPageVO.getOrderRentVehicleDetail().getMyDriverIds()).getData();
if (orderUserLicenses != null && orderUserLicenses.size() > 0) {
OrderVehicleCrosstownDto orderVehicleCrosstownDto = new OrderVehicleCrosstownDto();
orderVehicleCrosstownDto.setLicenseIdCard(orderUserLicenses.get(0).getIdCard());
......@@ -163,6 +160,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
}
} catch (Exception e) {
log.info("获取驾驶人信息失败!");
e.printStackTrace();
}
}
......
......@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.tour.dto.TourSpePriceDTO;
import com.xxfc.platform.tour.entity.TourGood;
import com.xxfc.platform.tour.entity.TourGoodVerification;
import com.xxfc.platform.tour.entity.TourTag;
import com.xxfc.platform.tour.entity.TourUser;
import com.xxfc.platform.tour.vo.TourGoodOrderFindVo;
import com.xxfc.platform.tour.vo.TourGoodOrderVo;
......@@ -104,4 +105,27 @@ public interface TourFeign {
@GetMapping("/spe/departure_date")
Date selectDepartureDataBySpeId(@RequestParam(value = "speIds") Integer speIds);
@GetMapping(value = "/tourGood/app/unauth/findRandomVehicle")
public ObjectRestResponse findRandomVehicle(@RequestParam(value = "number")Integer number);
//查询旅游路线列表
@RequestMapping(value = "/gw/app/unauth/getGoodList", method = RequestMethod.GET)
ObjectRestResponse getGoodList(@RequestParam(value = "page",defaultValue = "1") Integer page,
@RequestParam(value = "limit",defaultValue = "10") Integer limit,
@RequestParam(value = "tagId", required = false) Integer tagId);
//获取公司详情
@GetMapping("/gw/app/unauth/detail/{id}")
ObjectRestResponse getOne(@PathVariable Integer id);
//首页旅游列表
@GetMapping(value = "/gw/shopList")
List<GoodDataVO> goodListAll(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit",defaultValue = "4") Integer limit);
//旅游标签列表
@GetMapping(value = "/gw/tagList")
List<TourTag> tagList(@RequestParam(value = "isHot",defaultValue = "0")Integer isHot);
}
......@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.constant.RestCode;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.RandomUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.GoodDataVO;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
......@@ -18,15 +19,13 @@ import com.xxfc.platform.tour.mapper.*;
import com.xxfc.platform.tour.vo.TourGoodVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 旅游商品表
......@@ -325,6 +324,27 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> {
return mapper.findAllByHome((page-1)*limit,limit);
};
/**
* 获取指定数量的随机旅游路线
* @return
*/
public ObjectRestResponse findRandomVehicle(Integer number) {
number = number == null ? 2 : number;
Map<String, Object> param = new HashMap<>();
List<TourGood> list = mapper.getCoordinateList(param);
Set<TourGood> resultList = new HashSet<>();
if(CollectionUtils.isNotEmpty(list)) {
if(number >= list.size()) {
return ObjectRestResponse.succ(list);
}
Set<Integer> set = new HashSet<>();
RandomUtil.randomSet(list.size(), number, set, number);
for(Integer i : set) {
resultList.add(list.get(i));
}
}
return ObjectRestResponse.succ(resultList);
}
}
......@@ -49,6 +49,16 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> {
return mapper.findHotListTag(tag);
}
public List<TourTag> getTagList(Integer isHot) {
TourTag tag = new TourTag();
tag.setIsDel(0);
if (isHot!=null&&isHot==1){
tag.setIsHot(1);
return mapper.findHotListTag(tag);
}
return mapper.findAllByIsDel(tag);
}
public PageDataVO<TourTag> findPage(Map map) {
......
......@@ -52,5 +52,10 @@ public class TourGoodController extends BaseController<TourGoodBiz, TourGood> {
return baseBiz.getAllByHome(page,limit);
}
@ApiOperation("随机获取旅游路线")
@GetMapping(value = "/app/unauth/findRandomVehicle")
public ObjectRestResponse findRandomVehicle(Integer number) {
return baseBiz.findRandomVehicle(number);
}
}
\ No newline at end of file
package com.xxfc.platform.tour.rest;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.vo.GoodDataVO;
import com.xxfc.platform.tour.biz.TourGoodBiz;
import com.xxfc.platform.tour.biz.TourGoodDetailBiz;
import com.xxfc.platform.tour.biz.TourTagBiz;
import com.xxfc.platform.tour.entity.TourGood;
import com.xxfc.platform.tour.entity.TourTag;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("gw")
@IgnoreClientToken
@IgnoreUserToken
public class TourGwController extends BaseController<TourGoodBiz, TourGood> {
@Autowired
TourGoodDetailBiz goodDetailBiz;
@Autowired
TourTagBiz tourTagBiz;
/**
* 查询旅游路线列表
*
* @param page
* @param limit
* @param tagId
* @return
*/
@ApiOperation("查询旅游路线列表")
@RequestMapping(value = "/app/unauth/getGoodList", method = RequestMethod.GET)
public ObjectRestResponse getGoodList(@RequestParam(value = "page",defaultValue = "1") Integer page,
@RequestParam(value = "limit",defaultValue = "10") Integer limit,
@RequestParam(value = "tagId", required = false) Integer tagId) {
return baseBiz.getGoodList(page, limit, "", null, null, tagId, null);
}
@GetMapping("/app/unauth/detail/{id}")
public ObjectRestResponse getOne(@PathVariable Integer id) {
return goodDetailBiz.getGoodDetaileById(id);
}
@ApiOperation("首页旅游列表")
@GetMapping(value = "/shopList")
public List<GoodDataVO> goodListAll(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit",defaultValue = "4") Integer limit) {
return baseBiz.getAllByHome(page,limit);
}
@ApiOperation("旅游标签列表")
@GetMapping(value = "/tagList")
public List<TourTag> tagList(@RequestParam(value = "isHot",defaultValue = "0")Integer isHot) {
return tourTagBiz.getTagList(isHot);
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<groupId>com.xxfc.platform</groupId>
<modules>
<module>xx-uccn-api</module>
<module>xx-uccn-server</module>
</modules>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<artifactId>xx-uccn</artifactId>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-uccn-api</artifactId>
</project>
\ No newline at end of file
package com.xxfc.platform.uccn.comstnt;
/**
* 访问路径
* @author Administrator
*/
public enum UrlType {
OFFICIAL_WEBSITE("官网访问",1),BACKGROUND_MANAGEMENT("后台访问",2);
private String name;
private Integer code;
UrlType(String name, Integer code) {
this.name = name;
this.code = code;
}
public String getName() {
return name;
}
public Integer getCode() {
return code;
}
}
package com.xxfc.platform.uccn.dto;
import lombok.Data;
@Data
public class RandomListDto {
/**
* 列表类型 TypeEnum
*/
private Integer type;
/**
* 随机数量
*/
private Integer number;
/**
* 活动位置,1:欣欣官网 2:滴房车官网 0:无限制,
*/
private Integer location;
/**
* 新闻类型
*/
private Integer newsType;
/**
* 新闻id
*/
private Integer newsId;
}
package com.xxfc.platform.uccn.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/26 18:55
*/
@Data
public class SummitActivityFindDTO extends PageParam {
private Long startTime;
private Long endTime;
private String title;
private Integer location;
}
package com.xxfc.platform.uccn.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/26 18:54
*/
@Data
public class SummitActivitySaveDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
@ApiModelProperty(value = "活动主标题")
private String title;
@ApiModelProperty(value = "副标题(不展示)")
private String subtitle;
@ApiModelProperty(value = "活动主图")
private String banner;
@ApiModelProperty(value = "开始时间")
private Long startTime;
@ApiModelProperty(value = "结束时间")
private Long endTime;
@ApiModelProperty(value = "报名截止时间(不展示)")
private Long regCloseTime;
@ApiModelProperty(value = "省编码")
private Integer provinceCode;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市编码")
private Integer cityCode;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "县/镇 编码")
private Integer townCode;
@ApiModelProperty(value = "县/镇")
private String town;
@ApiModelProperty(value = "活动场地(地址格式)")
private String address;
@ApiModelProperty(value = "纬度(不展示)")
private BigDecimal latitude;
@ApiModelProperty(value = "经度 (不展示)")
private BigDecimal longitude;
@ApiModelProperty(value = "总人数")
private Integer limitNum;
@ApiModelProperty(value = "活动图文内容")
private String content;
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
@ApiModelProperty(value = "活动对象说明(不展示)")
private String actDesc;
@ApiModelProperty(value = "活动类型(保留,不展示)")
private Integer type;
@ApiModelProperty(value = "1:欣欣官网 2:滴房车官网 0:无限制")
private Integer location;
@ApiModelProperty(value = "排序")
private Integer rank;
}
package com.xxfc.platform.uccn.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import tk.mybatis.mapper.annotation.KeySql;
import tk.mybatis.mapper.code.IdentityDialect;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 文章实体
*
* @author Administrator
*/
@Data
@Table(name = "article")
@ApiModel(value = "文章实体")
public class Article {
@Id
@KeySql(dialect = IdentityDialect.MYSQL)
// @GeneratedValue(generator = "JDBC")
private Integer id;
/**
* 标题
*/
@Column(name = "title")
@ApiModelProperty(value = "标题")
private String title;
/**
* 副标题
*/
@Column(name = "subtitle")
@ApiModelProperty(value = "副标题")
private String subtitle;
/**
* 文章摘要
*/
@Column(name = "epitome")
@ApiModelProperty(value = "文章摘要")
private String epitome;
/**
* 正文
*/
@Column(name = "text")
@ApiModelProperty(value = "正文")
private String text;
/**
* 图片url,以逗号分割
*/
@Column(name = "picture")
@ApiModelProperty(value = "图片url,以逗号分割")
private String picture;
/**
* 作者
*/
@Column(name = "author")
@ApiModelProperty(value = "作者")
private String author;
/**
* 发布人
*/
@Column(name = "publisher")
@ApiModelProperty(value = "发布人")
private String publisher;
/**
* 封面图
*/
@Column(name = "cover_image")
@ApiModelProperty(value = "封面图")
private String coverImage;
/**
* 权重
*/
@Column(name = "weight")
@ApiModelProperty(value = "权重")
private Integer weight;
/**
* 是否删除:0-否,1-是
*/
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除:0-否,1-是")
private Integer isDel;
/**
* 是否上下架:0-否,1-是
*/
@Column(name = "status")
@ApiModelProperty(value = "是否上下架:0-否,1-是")
private Integer status;
@Column(name ="type")
@ApiModelProperty(value = "文章发布网站:0-所有,1-新欣房车官网,2-滴房车官网")
private Integer type;
/**
* 创建时间
*/
@Column(name = "cre_time")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date creTime;
/**
* 修改时间
*/
@Column(name = "upd_time")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "修改时间")
private Date updTime;
/**
* 上架时间
*/
@Column(name = "add_time")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "上架时间")
private Date addTime;
}
package com.xxfc.platform.uccn.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 峰会活动
*
* @author libin
* @email 18178966185@163.com
* @date 2019-08-26 15:25:32
*/
@Data
@Table(name = "summit_activity")
public class SummitActivity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
/**
* 活动主标题
*/
@Column(name = "title")
@ApiModelProperty(value = "活动主标题")
private String title;
/**
* 副标题(不展示)
*/
@Column(name = "subtitle")
@ApiModelProperty(value = "副标题(不展示)")
private String subtitle;
/**
* 活动主图
*/
@Column(name = "banner")
@ApiModelProperty(value = "活动主图")
private String banner;
/**
* 开始时间
*/
@Column(name = "start_time")
@ApiModelProperty(value = "开始时间")
private Long startTime;
/**
* 结束时间
*/
@Column(name = "end_time")
@ApiModelProperty(value = "结束时间")
private Long endTime;
/**
* 报名截止时间(不展示)
*/
@Column(name = "reg_close_time")
@ApiModelProperty(value = "报名截止时间(不展示)")
private Long regCloseTime;
/**
* 省编码
*/
@Column(name = "province_code")
@ApiModelProperty(value = "省编码")
private Integer provinceCode;
/**
* 省
*/
@Column(name = "province")
@ApiModelProperty(value = "省")
private String province;
/**
* 市编码
*/
@Column(name = "city_code")
@ApiModelProperty(value = "市编码")
private Integer cityCode;
/**
* 市
*/
@Column(name = "city")
@ApiModelProperty(value = "市")
private String city;
/**
* 县/镇 编码
*/
@Column(name = "town_code")
@ApiModelProperty(value = "县/镇 编码")
private Integer townCode;
/**
* 县/镇
*/
@Column(name = "town")
@ApiModelProperty(value = "县/镇")
private String town;
/**
* 活动场地(地址格式)
*/
@Column(name = "address")
@ApiModelProperty(value = "活动场地(地址格式)")
private String address;
/**
* 纬度(不展示)
*/
@Column(name = "latitude")
@ApiModelProperty(value = "纬度(不展示)")
private BigDecimal latitude;
/**
* 经度 (不展示)
*/
@Column(name = "longitude")
@ApiModelProperty(value = "经度 (不展示)")
private BigDecimal longitude;
/**
* 总人数
*/
@Column(name = "limit_num")
@ApiModelProperty(value = "总人数")
private Integer limitNum;
/**
* 活动图文内容
*/
@Column(name = "content")
@ApiModelProperty(value = "活动图文内容")
private String content;
/**
* 活动开关(1开,0关)
*/
@Column(name = "is_show")
@ApiModelProperty(value = "活动开关(0关,1开)")
private Integer isShow;
/**
* 报名开关(0开,1关)
*/
@Column(name = "is_open_reg")
@ApiModelProperty(value = "报名开关(0开,1关)")
private Integer isOpenReg;
/**
* 删除(0正常,1删除)
*/
@Column(name = "is_del")
@ApiModelProperty(value = "删除(0正常,1删除)")
private Integer isDel;
/**
* 0是未发布,1是已发布
*/
@Column(name = "is_publish")
@ApiModelProperty(value = "0是未发布,1是已发布")
private Integer isPublish;
/**
* 0是普通,1是置顶(首页展示)
*/
@Column(name = "is_home_page")
@ApiModelProperty(value = "0是普通,1是置顶(首页展示)")
private Integer isHomePage;
/**
* 创建人id
*/
@Column(name = "crt_user")
@ApiModelProperty(value = "创建人id")
private Integer crtUser;
/**
* 创建人姓名
*/
@Column(name = "crt_name")
@ApiModelProperty(value = "创建人姓名")
private String crtName;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间")
private Long updTime;
/**
* 活动对象说明(不展示)
*/
@Column(name = "act_desc")
@ApiModelProperty(value = "活动对象说明(不展示)")
private String actDesc;
/**
* 活动类型(保留,不展示)
*/
@Column(name = "type")
@ApiModelProperty(value = "活动类型(保留,不展示)")
private Integer type;
/**
* 报名人数(不展示)
*/
@Column(name = "will_num")
@ApiModelProperty(value = "报名人数(不展示)")
private Integer willNum;
/**
* 1:欣欣官网 2:滴房车官网 0:无限制
*/
@Column(name = "location")
@ApiModelProperty(value = "1:欣欣官网 2:滴房车官网 0:无限制")
private Integer location;
/**
* 排序
*/
@Column(name = "rank")
@ApiModelProperty(value = "排序")
private Integer rank;
}
package com.xxfc.platform.uccn.vo;
import lombok.Data;
/**
* 新闻文章查询条件
* @author Administrator
*/
@Data
public class ArticleQuery {
private Integer page;
private Integer limit;
// private String newsContent;
}
package com.xxfc.platform.uccn.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/26 19:00
*/
@Data
public class SummitActivityAdminVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
@ApiModelProperty(value = "活动主标题")
private String title;
@ApiModelProperty(value = "副标题(不展示)")
private String subtitle;
@ApiModelProperty(value = "活动主图")
private String banner;
@ApiModelProperty(value = "开始时间")
private Long startTime;
@ApiModelProperty(value = "结束时间")
private Long endTime;
@ApiModelProperty(value = "报名截止时间(不展示)")
private Long regCloseTime;
@ApiModelProperty(value = "省编码")
private Integer provinceCode;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市编码")
private Integer cityCode;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "县/镇 编码")
private Integer townCode;
@ApiModelProperty(value = "县/镇")
private String town;
@ApiModelProperty(value = "活动场地(地址格式)")
private String address;
@ApiModelProperty(value = "纬度(不展示)")
private BigDecimal latitude;
@ApiModelProperty(value = "经度 (不展示)")
private BigDecimal longitude;
@ApiModelProperty(value = "总人数")
private Integer limitNum;
@ApiModelProperty(value = "活动图文内容")
private String content;
@ApiModelProperty(value = "活动开关(0关,1开)")
private Integer isShow;
@ApiModelProperty(value = "报名开关(0开,1关)")
private Integer isOpenReg;
@ApiModelProperty(value = "删除(0正常,1删除)")
private Integer isDel;
@ApiModelProperty(value = "0是未发布,1是已发布")
private Integer isPublish;
@ApiModelProperty(value = "0是普通,1是置顶(首页展示)")
private Integer isHomePage;
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
@ApiModelProperty(value = "更新时间")
private Long updTime;
@ApiModelProperty(value = "活动对象说明(不展示)")
private String actDesc;
@ApiModelProperty(value = "活动类型(保留,不展示)")
private Integer type;
@ApiModelProperty(value = "报名人数(不展示)")
private Integer willNum;
@ApiModelProperty(value = "1:欣欣官网 2:滴房车官网 0:无限制")
private Integer location;
@ApiModelProperty(value = "排序")
private Integer rank;
}
package com.xxfc.platform.uccn.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/26 16:17
*/
@Data
public class SummitActivityDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
@ApiModelProperty(value = "活动主标题")
private String title;
@ApiModelProperty(value = "副标题(不展示)")
private String subtitle;
@ApiModelProperty(value = "活动主图")
private String banner;
@ApiModelProperty(value = "开始时间")
private Long startTime;
@ApiModelProperty(value = "结束时间")
private Long endTime;
@ApiModelProperty(value = "报名截止时间(不展示)")
private Long regCloseTime;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "县/镇")
private String town;
@ApiModelProperty(value = "活动场地(地址格式)")
private String address;
@ApiModelProperty(value = "总人数")
private Integer limitNum;
@ApiModelProperty(value = "活动图文内容")
private String content;
@ApiModelProperty(value = "报名开关(0开,1关)")
private Integer isOpenReg;
@ApiModelProperty(value = "活动对象说明(不展示)")
@JsonIgnore
private String actDesc;
@ApiModelProperty(value = "活动类型(保留,不展示)")
@JsonIgnore
private Integer type;
@ApiModelProperty(value = "报名人数(不展示)")
@JsonIgnore
private Integer willNum;
}
package com.xxfc.platform.uccn.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/26 15:51
*/
@Data
public class SummitActivityVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
@ApiModelProperty(value = "活动主标题")
private String title;
@ApiModelProperty(value = "副标题(不展示)")
private String subtitle;
@ApiModelProperty(value = "活动主图")
private String banner;
@ApiModelProperty(value = "开始时间")
private Long startTime;
@ApiModelProperty(value = "结束时间")
private Long endTime;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "县/镇")
private String town;
@ApiModelProperty(value = "活动场地(地址格式)")
private String address;
@ApiModelProperty(value = "排序")
@JsonIgnore
private Integer rank;
}
package com.xxfc.platform.uccn.vo;
import lombok.Data;
public enum TypeEnum {
VEHICLE(1, "车型"),
TOUR(2, "旅游"),
CAMPSITE(3, "营地"),
ACTIVITY(4, "活动"),
NEWS(5, "新闻");
private Integer code;
private String msg;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
TypeEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public static TypeEnum getByValue(Integer value){
for(TypeEnum typeEnum : values()){
if (typeEnum.getCode() == value) {
return typeEnum;
}
}
return null;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-uccn-server</artifactId>
<dependencies>
<!-- 自己项目 -->
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-uccn-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-admin-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-vehicle-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-tour-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-campsite-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>xx-uccn</finalName>
<plugins>
<!-- 此插件用来生成通用mapper的代码 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>
${basedir}/src/main/resources/builder/generatorConfig.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.xxfc.platform.uccn;
import com.github.wxiaoqi.security.api.vo.config.HeaderConfig;
import com.github.wxiaoqi.security.auth.client.EnableAceAuthClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import tk.mybatis.spring.annotation.MapperScan;
/**
*
* @author Administrator
*/
@SpringBootApplication(scanBasePackages ={
"com.github.wxiaoqi.security.common.handler",
"com.xxfc.platform"
})
@EnableDiscoveryClient
@EnableAceAuthClient
@EnableFeignClients(value = {"com.xxfc.platform","com.github.wxiaoqi.security"}, defaultConfiguration = HeaderConfig.class)
@MapperScan(basePackages = "com.xxfc.platform.uccn.mapper")
public class UccnApplication {
public static void main(String[] args) {
SpringApplication.run(UccnApplication.class,args);
}
}
package com.xxfc.platform.uccn.biz;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.uccn.comstnt.UrlType;
import com.xxfc.platform.uccn.entity.Article;
import com.xxfc.platform.uccn.mapper.ArticleMapper;
import com.xxfc.platform.uccn.vo.ArticleQuery;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.security.SecureRandom;
import java.util.*;
/**
* @author Administrator
*/
@Service
public class ArticleBiz extends BaseBiz<ArticleMapper, Article> {
/**
* 随机文章条数
*/
private final Integer RANDOM_NUMBER = 2;
/**
* 首页文章条数
*/
private final Integer HOME_PAGE_NUMBER = 4;
/**
* 文章列表
*
* @param page
* @param limit
* @param type
* @return
*/
public PageInfo getArticleList(Integer page, Integer limit, Integer type) {
PageHelper.startPage(page, limit);
List articleList = mapper.getArticleList(type,null,null);
return PageInfo.of(articleList);
}
/**
* 获取一条数据
*
* @param id
* @param urlType
* @return
*/
public Article getOne(Integer id, Integer urlType) {
Example example = new Example(Article.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("id", id);
criteria.andEqualTo("isDel", 0);
if (UrlType.OFFICIAL_WEBSITE.getCode().equals(urlType)) {
criteria.andEqualTo("status", 1);
}
return mapper.selectOneByExample(example);
}
/**
* 随机获取三条连续的文章
*
*
*
* @param type
* @param id
* @return
*/
public List getThree( Integer type, Integer number, Integer id) {
number = number == null ? RANDOM_NUMBER : number;
List<Article> articleList = mapper.getArticleList(type,null,id);
if (!Objects.isNull(articleList)) {
int size = articleList.size();
if (number >= size) {
return articleList;
} else {
Random random = new Random();
int r = random.nextInt(size - number + 1);
List<Article> result = new ArrayList<>();
for (int i = 0; i < number.intValue(); i++) {
int index = i + r;
result.add(articleList.get(index));
}
return result;
}
}
return new ArrayList();
}
/**
* 首页文章列表
*
* @param type
* @return
*/
public List getHomePageArticle(Integer type) {
List<Article> articleList = mapper.getArticleList(type,HOME_PAGE_NUMBER,null);
// if (Objects.isNull(articleList)) {
// return new ArrayList();
// } else {
// if (articleList.size() > HOME_PAGE_NUMBER) {
// return articleList.subList(0, HOME_PAGE_NUMBER);
// } else {
return articleList;
// }
// }
}
@Transactional(rollbackFor = Exception.class)
public void add(Article article) {
if (article == null) {
return;
}
article.setIsDel(0);
if (article.getStatus() == null) {
article.setStatus(0);
}
if (article.getType() == null) {
article.setType(0);
}
article.setCreTime(new Date());
mapper.insertSelective(article);
}
public PageInfo findAll(ArticleQuery query) {
PageHelper.startPage(query.getPage(),query.getLimit());
Example exa = Example.builder(Article.class).where(
WeekendSqls.<Article>custom()
.andEqualTo(Article::getIsDel,0)
).orderByAsc("weight").orderByDesc("addTime").build();
List<Article> articles = mapper.selectByExample(exa);
return PageInfo.of(articles);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int updateSelectiveByIdRe(Article article){
article.setUpdTime(new Date());
return mapper.updateByPrimaryKeySelective(article);
}
public int putaway(Integer id) {
Article article = new Article();
article.setId(id);
article.setUpdTime(new Date());
article.setAddTime(new Date());
article.setStatus(1);
return mapper.updateByPrimaryKeySelective(article);
}
public int soldOut(Integer id) {
Article article = new Article();
article.setId(id);
article.setUpdTime(new Date());
article.setStatus(0);
return mapper.updateByPrimaryKeySelective(article);
}
public int remove(Integer id) {
Article article = new Article();
article.setId(id);
article.setUpdTime(new Date());
article.setIsDel(1);
return mapper.updateByPrimaryKeySelective(article);
}
}
package com.xxfc.platform.uccn.biz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.campsite.feign.CampsiteFeign;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.uccn.vo.TypeEnum;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 获取随机数量的车型、旅游、营地、活动
*/
@Service
@Slf4j
public class RandomListBiz {
@Autowired
VehicleFeign vehicleFeign;
@Autowired
TourFeign tourFeign;
@Autowired
CampsiteFeign campsiteFeign;
@Autowired
SummitActivityBiz summitActivityBiz;
@Autowired
ArticleBiz articleBiz;
/**
* @param type 类型
* @param number 随机数,默认是2
* @return
*/
public ObjectRestResponse getRandomList(Integer type, Integer number, Integer location, Integer id, Integer newsType) {
if(type != null) {
number = number == null ? 2 : number;
switch (TypeEnum.getByValue(type)) {
case VEHICLE:
return vehicleFeign.findRandomVehicle(number);
case TOUR:
return tourFeign.findRandomVehicle(number);
case CAMPSITE:
return campsiteFeign.findRandomVehicle(number);
case ACTIVITY:
return ObjectRestResponse.succ(summitActivityBiz.getHostWithSummitActivity(number, location));
case NEWS:
return ObjectRestResponse.succ(articleBiz.getThree(type, number, id));
}
}
return ObjectRestResponse.succ();
}
}
package com.xxfc.platform.uccn.config;
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 {
/**
* 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() {
ParameterBuilder ticketPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
ticketPar.name("Authorization").description("user Authorization")
.modelRef(new ModelRef("string")).parameterType("header")
//header中的ticket参数非必填,传空也可以
.required(false).build();
//根据每个方法名也知道当前方法在设置什么参数
pars.add(ticketPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxfc.platform.uccn"))
.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.uccn.config;
import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
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.WebMvcConfigurer;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/12 15:27
*/
@Configuration("campsiteWebConfig")
@Primary
public class WebConfiguration implements WebMvcConfigurer {
@Bean
GlobalExceptionHandler getGlobalExceptionHandler() {
return new GlobalExceptionHandler();
}
}
package com.xxfc.platform.uccn.mapper;
import com.xxfc.platform.uccn.entity.Article;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* @author Administrator
*/
public interface ArticleMapper extends Mapper<Article> {
/**
* 获取获取文章信息
* @param type
* @param limit 已使用分业插件传null值即可,不要重复传
* @param id 当前文章id ,无就传null
* @return
*/
List<Article> getArticleList(@Param("type") Integer type,@Param( "limit") Integer limit,@Param("id") Integer id);
}
package com.xxfc.platform.uccn.mapper;
import com.xxfc.platform.uccn.entity.SummitActivity;
import tk.mybatis.mapper.common.Mapper;
/**
* 峰会活动
*
* @author libin
* @email 18178966185@163.com
* @date 2019-08-26 15:25:32
*/
public interface SummitActivityMapper extends Mapper<SummitActivity> {
}
package com.xxfc.platform.uccn.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.uccn.biz.ArticleBiz;
import com.xxfc.platform.uccn.entity.Article;
import com.xxfc.platform.uccn.vo.ArticleQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
/**
* 文章
*
* @author Administrator
*/
@RestController
@RequestMapping("/article")
@Api(tags = {"文章"})
public class ArticleController extends BaseController<ArticleBiz, Article> {
@GetMapping("/app/unauth/list")
@ApiOperation(value = "获取文章列表")
public ObjectRestResponse getArticleList(
@RequestParam(name = "page", defaultValue = "1") Integer page,
@RequestParam(name = "limit", defaultValue = "10") Integer limit,
@RequestParam(name = "type", defaultValue = "1") Integer type) {
return ObjectRestResponse.succ(baseBiz.getArticleList(page, limit, type));
}
@GetMapping("/app/unauth/one")
@ApiOperation(value = "获取一条数据")
public ObjectRestResponse getOne(@RequestParam Integer id,
@RequestParam(required = false) Integer urlType) {
return ObjectRestResponse.succ(baseBiz.getOne(id,urlType));
}
/**
* 随机获取三条数据
* @param type
* @param number
* @param id
* @return
*/
@GetMapping("/app/unauth/three")
@ApiOperation(value = "随机获取三条数据")
public ObjectRestResponse randomAccessToThreeData(@RequestParam("type") Integer type,
@RequestParam("number") Integer number,
@RequestParam("id") Integer id
){
return ObjectRestResponse.succ(baseBiz.getThree(type,number,id));
}
@GetMapping("/app/unauth/homePage/{type}")
@ApiOperation(value = "获取首页文章列表")
public ObjectRestResponse getHomePageArticle(@PathVariable Integer type){
return ObjectRestResponse.succ(baseBiz.getHomePageArticle(type));
}
@Override
@PostMapping("/add")
@ApiOperation(value = "添加")
public ObjectRestResponse add(@RequestBody Article article){
baseBiz.add(article);
return ObjectRestResponse.succ();
}
@PostMapping("/all")
@ApiOperation(value = "获取新闻列表")
public ObjectRestResponse<Article> findAll(@RequestBody ArticleQuery query){
return ObjectRestResponse.succ(baseBiz.findAll(query));
}
@Override
@PutMapping("/update")
@ApiOperation(value = "修改")
public ObjectRestResponse update(@RequestBody Article article){
int flag = baseBiz.updateSelectiveByIdRe(article);
if (flag==1) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
}
@PutMapping("/putaway/{id}")
@ApiOperation(value = "上架")
public ObjectRestResponse putaway(@PathVariable Integer id){
int flag = baseBiz.putaway(id);
if (flag==1) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
}
@PutMapping("/soldOut/{id}")
@ApiOperation(value = "下架")
public ObjectRestResponse soldOut(@PathVariable Integer id){
int flag = baseBiz.soldOut(id);
if (flag==1) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
}
@PutMapping("/remove/{id}")
@ApiOperation(value = "删除")
public ObjectRestResponse remove(@PathVariable Integer id){
int flag = baseBiz.remove(id);
if (flag==1) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
}
}
package com.xxfc.platform.uccn.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.campsite.feign.CampsiteFeign;
import com.xxfc.platform.campsite.vo.CampsiteShopDetailVo;
import com.xxfc.platform.campsite.vo.CampsiteShopPageVo;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/28 10:05
*/
@RestController
@RequestMapping("/app/unauth/campsite")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class CampsiteUccnController {
private final CampsiteFeign campsiteFeign;
@ApiOperation("分页查询营地列表")
@GetMapping("/shops")
public ObjectRestResponse<PageDataVO<CampsiteShopPageVo>> findCampsiteShopPageByType(@RequestParam(value = "type", required = false) Integer type,
@RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", required = false, defaultValue = "6") Integer pageSize) {
return campsiteFeign.findCampsiteShopPageByType(type, pageNo, pageSize);
}
/**
* @param longitude 经度
* @param latitude 纬度
* @return
*/
@ApiOperation("查询营地详情")
@GetMapping("/shop")
public ObjectRestResponse<CampsiteShopDetailVo> findCampsiteShopDetailById(@RequestParam(value = "id") Integer id,
@RequestParam(value = "longitude", required = false) Double longitude,
@RequestParam(value = "latitude", required = false) Double latitude) {
return campsiteFeign.findCampsiteShopDetailById(id, longitude, latitude);
}
}
package com.xxfc.platform.uccn.rest;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.CommonBaseController;
import com.xxfc.platform.tour.feign.TourFeign;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("app/unauth/tour")
@Slf4j
@IgnoreClientToken
public class GwTourController extends CommonBaseController {
@Autowired
TourFeign tourFeign;
@ApiOperation("查询旅游路线列表")
@RequestMapping(value = "/getGoodList", method = RequestMethod.GET)
@IgnoreUserToken
public ObjectRestResponse getGoodList(@RequestParam(value = "page",defaultValue = "1") Integer page, @RequestParam(value = "limit",defaultValue = "10") Integer limit,
@RequestParam(value = "tagId", required = false) Integer tagId) {
return tourFeign.getGoodList(page, limit, tagId);
}
@GetMapping("/detail/{id}")
@IgnoreUserToken
public ObjectRestResponse getOne(@PathVariable Integer id) {
return tourFeign.getOne(id);
}
@ApiOperation("首页旅游列表")
@GetMapping(value = "/shopList")
@IgnoreUserToken
public ObjectRestResponse goodListAll(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "limit",defaultValue = "4") Integer limit) {
return ObjectRestResponse.succ(tourFeign.goodListAll(page,limit));
}
@GetMapping("/tagList")
@IgnoreUserToken
public ObjectRestResponse getTagList(@RequestParam(value = "isHot",defaultValue = "0")Integer isHot) {
return ObjectRestResponse.succ(tourFeign.tagList(isHot));
}
}
package com.xxfc.platform.uccn.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.uccn.biz.RandomListBiz;
import com.xxfc.platform.uccn.dto.RandomListDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/random/list")
public class RandomListController {
@Autowired
RandomListBiz randomListBiz;
@GetMapping("/app/unauth/get")
public ObjectRestResponse getRandomList(RandomListDto randomListDto) {
if(randomListDto == null) {
return ObjectRestResponse.paramIsEmpty();
}
return randomListBiz.getRandomList(randomListDto.getType(), randomListDto.getNumber(), randomListDto.getLocation(), randomListDto.getNewsId(), randomListDto.getNewsType());
}
}
package com.xxfc.platform.uccn.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.uccn.biz.SummitActivityBiz;
import com.xxfc.platform.uccn.vo.SummitActivityDetailVo;
import com.xxfc.platform.uccn.vo.SummitActivityVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/26 15:36
*/
@RestController
@RequestMapping("/summitActivity/app/unauth")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@Api("峰会")
public class SummitActivityController {
private final SummitActivityBiz summitActivityBiz;
@ApiOperation("官网首页展示")
@GetMapping("/home")
public ObjectRestResponse<List<SummitActivityVo>> findSummitActivityForHomePage(@RequestParam(value = "limit",defaultValue = "5", required = false) Integer limit,
@RequestParam(value = "location", defaultValue = "1", required = false) Integer location) {
List<SummitActivityVo> summitActivityVos = summitActivityBiz.findSummitActivityForHomePage(limit, location);
return ObjectRestResponse.succ(summitActivityVos);
}
@ApiOperation("峰会活动详情")
@GetMapping("/{id}")
public ObjectRestResponse<SummitActivityDetailVo> findSummitActivityDetailById(@PathVariable(value = "id") Integer id) {
SummitActivityDetailVo summitActivityDetailVo = summitActivityBiz.findSummitActivityDetailById(id);
return ObjectRestResponse.succ(summitActivityDetailVo);
}
@ApiOperation("热门推荐获取")
@GetMapping("/hot")
public ObjectRestResponse<List<SummitActivityVo>> findHotWithSummitActivity(@RequestParam(value = "num", required = false, defaultValue = "2") Integer num,
@RequestParam(value = "location", defaultValue = "1", required = false) Integer location) {
List<SummitActivityVo> summitActivityVos = summitActivityBiz.getHostWithSummitActivity(num, location);
return ObjectRestResponse.succ(summitActivityVos);
}
@ApiOperation("官网活动列表")
@GetMapping("/list")
public ObjectRestResponse<PageDataVO<SummitActivityVo>> findSummitActivityWithPage(@RequestParam(value = "page", defaultValue = "1", required = false) Integer page,
@RequestParam(value = "limit", defaultValue = "6", required = false) Integer limit,
@RequestParam(value = "location", defaultValue = "0", required = false) Integer location) {
PageDataVO<SummitActivityVo> pageDataVO = summitActivityBiz.findSummitActivityWithPage(page, limit,location);
return ObjectRestResponse.succ(pageDataVO);
}
}
\ No newline at end of file
package com.xxfc.platform.uccn.rest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.CommonBaseController;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.VModelDetailVO;
import com.xxfc.platform.vehicle.pojo.VehicleModelQueryCondition;
import com.xxfc.platform.vehicle.pojo.VehicleModelVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/vehicleModel/app/unauth")
@Slf4j
@IgnoreClientToken
@Api(tags = "房车车型", value = "房车车型")
public class VehicleModelController extends CommonBaseController {
@Autowired
VehicleFeign vehicleFeign;
/**
* 车型详情
*
* @param name
* @return
*/
@ApiOperation("车型详情")
@RequestMapping(value = "/detail/{name}", method = RequestMethod.GET)
@IgnoreUserToken
public ObjectRestResponse<VModelDetailVO> detail(@PathVariable("name") @ApiParam("车型名称") String name) {
ObjectRestResponse<VModelDetailVO> objectRestResponse = vehicleFeign.detailByParam(BeanUtil.beanToMap(new VehicleModel(){{
setName(name);
}}, false, true));
objectRestResponse.getData().setUccnCataList(initUccnCataCollect(objectRestResponse.getData().getConfig()));
return objectRestResponse;
}
/**
* 车型列表查
*
* @param vmqc 条件
* @return
*/
@ApiOperation("车型列表")
@GetMapping(value = "/findVehicleModelPage")
@IgnoreUserToken
public ObjectRestResponse<PageDataVO<VehicleModelVo>> findVehicleModelPageUnauthfind(VehicleModelQueryCondition vmqc) {
ObjectRestResponse<PageDataVO<VehicleModelVo>> objectRestResponse = vehicleFeign.findVehicleModelPageUnauthfind(vmqc);
PageDataVO<VehicleModelVo> pageDataVOs = objectRestResponse.getData();
pageDataVOs.getData().forEach( v -> {
v.setUccnCataList(initUccnCataCollect(v.getConfig()));
});
return objectRestResponse;
}
private List<VehiclePlatCata> initUccnCataCollect(String modelConfig) {
List<VehiclePlatCata> vehiclePlatCataList = vehicleFeign.getCatasByIds(modelConfig).getData();
int[] array = StrUtil.splitToInt("14,7,11", ",");
return vehiclePlatCataList.parallelStream()
.filter(v1 -> {return ArrayUtil.contains(array, v1.getParentId());})
.sorted(Comparator.comparing(VehiclePlatCata::getParentId, (x, y) -> {
int xx = 0,yy = 0;
for(int i = 0; i < array.length; i++) {
if(x == array[i]) {
xx = i;
}else if(y == array[i]) {
yy = i;
}
}
return (xx - yy);
})).collect(Collectors.toList());
}
}
package com.xxfc.platform.uccn.rest.admin;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.uccn.biz.SummitActivityBiz;
import com.xxfc.platform.uccn.dto.SummitActivityFindDTO;
import com.xxfc.platform.uccn.dto.SummitActivitySaveDTO;
import com.xxfc.platform.uccn.vo.SummitActivityAdminVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/26 15:36
*/
@RestController
@RequestMapping("/admin/summitActivity")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@Api("峰会活动*后台")
public class SummitActivityAdminController {
private final SummitActivityBiz summitActivityBiz;
@ApiOperation("活动列表")
@PostMapping("/list")
public ObjectRestResponse<PageDataVO<SummitActivityAdminVo>> listSummitActivityWithPage(@RequestBody SummitActivityFindDTO summitActivityFindDTO){
PageDataVO<SummitActivityAdminVo> pageDataVO = summitActivityBiz.listSummitActivityWithPage(summitActivityFindDTO);
return ObjectRestResponse.succ(pageDataVO);
}
@ApiOperation("编辑查询")
@GetMapping("/{id}")
public ObjectRestResponse<SummitActivitySaveDTO> selectToEdit(@PathVariable(value = "id") Integer id){
SummitActivitySaveDTO summitActivitySaveDTO = summitActivityBiz.selectSummitActivityById(id);
return ObjectRestResponse.succ(summitActivitySaveDTO);
}
@ApiOperation("保存或编辑")
@PostMapping("/save")
public ObjectRestResponse<Void> saveSummitActivity(@RequestBody SummitActivitySaveDTO summitActivitySaveDTO, UserDTO userDTO){
summitActivityBiz.saveSummitActivity(summitActivitySaveDTO,userDTO);
return ObjectRestResponse.succ();
}
@ApiOperation("活动发布设置")
@PutMapping("/publish/{id}/{state}")
public ObjectRestResponse<Void> publishSummitActivity(@PathVariable(value = "id") Integer id,@PathVariable(value = "state") Integer state){
summitActivityBiz.publishSummitActivityById(id,state);
return ObjectRestResponse.succ();
}
@ApiOperation("上下架活动")
@PutMapping("/soldout/{id}/{state}")
public ObjectRestResponse<Void> soldOutSummitActivity(@PathVariable(value = "id") Integer id,@PathVariable(value = "state") Integer state){
summitActivityBiz.soldOutSummitAcitivityById(id,state);
return ObjectRestResponse.succ();
}
@ApiOperation("首页展示设置")
@PutMapping("/home_page/{id}/{state}")
public ObjectRestResponse<Void> setShowOnHomePage(@PathVariable(value = "id") Integer id,@PathVariable(value = "state") Integer state){
summitActivityBiz.setShowOnHomePageById(id,state);
return ObjectRestResponse.succ();
}
@ApiOperation("报名开关设置")
@PutMapping("/reg_state/{id}/{state}")
public ObjectRestResponse<Void> setRegStateWithSummitActivity(@PathVariable(value = "id") Integer id,@PathVariable(value = "state") Integer state){
summitActivityBiz.setRegSateWithSummitActivityById(id,state);
return ObjectRestResponse.succ();
}
@ApiOperation("更改排序")
@PutMapping("/rank/{id}/{rank}")
public ObjectRestResponse<Void> setSummitActivityRank(@PathVariable(value = "id") Integer id,@PathVariable("rank") Integer rank){
summitActivityBiz.updateSummitActivityRankById(id,rank);
return ObjectRestResponse.succ();
}
@ApiOperation("删除活动")
@DeleteMapping("/{id}")
public ObjectRestResponse<Void> deleteSummitActivity(@PathVariable(value = "id") Integer id){
summitActivityBiz.deleteSummitActivityById(id);
return ObjectRestResponse.succ();
}
}
\ No newline at end of file
spring:
application:
name: xx-uccn
profiles:
active: dev
cloud:
nacos:
config:
file-extension: yaml
---
spring:
profiles: dev
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
#共用配置,暂定一个
shared-dataids: common-dev.yaml,mongodb-log-dev.yaml
---
spring:
profiles: pro
cloud:
nacos:
config:
server-addr: 10.5.52.2:8848
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
<property name="LOG_HOME" value="${system.log.path:-logs}"/>
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!--1. 输出到控制台-->
<filter class="com.github.wxiaoqi.security.common.filter.NacosLogFilter"></filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<charset>UTF-8</charset> <!-- 设置字符集 -->
</encoder>
</appender>
<appender name="SYSTEM_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 按照每天生成日志文件 -->
<filter class="com.github.wxiaoqi.security.common.filter.DenyFilter"></filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/sys.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件输出的文件名 -->
<MaxHistory>30</MaxHistory><!--日志文件保留天数 -->
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
</encoder>
</appender>
<appender name="WEB_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 按照每天生成日志文件 -->
<filter class="com.github.wxiaoqi.security.common.filter.AcceptFilter"></filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/log.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件输出的文件名 -->
<MaxHistory>30</MaxHistory><!--日志文件保留天数 -->
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="SYSTEM_FILE" />
<appender-ref ref="WEB_FILE" />
</root>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.uccn.mapper.ArticleMapper">
<select id="getArticleList" resultType="com.xxfc.platform.uccn.entity.Article">
select id, title,epitome,add_time,cover_image from article
where
is_del=0
and status=1
<if test="id != null">
and id != #{id}
</if>
and (type=#{type} or type=0)
order by
weight ASC ,add_time DESC
<if test="limit != null">
limit #{limit}
</if>
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.uccn.mapper.SummitActivityMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.uccn.entity.SummitActivity" id="summitActivityMap">
<result property="id" column="id"/>
<result property="title" column="title"/>
<result property="subtitle" column="subtitle"/>
<result property="banner" column="banner"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="regCloseTime" column="reg_close_time"/>
<result property="provinceCode" column="province_code"/>
<result property="province" column="province"/>
<result property="cityCode" column="city_code"/>
<result property="city" column="city"/>
<result property="townCode" column="town_code"/>
<result property="town" column="town"/>
<result property="address" column="address"/>
<result property="latitude" column="latitude"/>
<result property="longitude" column="longitude"/>
<result property="limitNum" column="limit_num"/>
<result property="content" column="content"/>
<result property="isShow" column="is_show"/>
<result property="isOpenReg" column="is_open_reg"/>
<result property="isDel" column="is_del"/>
<result property="isPublish" column="is_publish"/>
<result property="isHomePage" column="is_home_page"/>
<result property="crtUser" column="crt_user"/>
<result property="crtName" column="crt_name"/>
<result property="crtTime" column="crt_time"/>
<result property="actDesc" column="act_desc"/>
<result property="type" column="type"/>
<result property="willNum" column="will_num"/>
<result property="location" column="location"/>
<result property="rank" column="rank"/>
</resultMap>
</mapper>
\ No newline at end of file
......@@ -62,10 +62,15 @@ public class SmsTemplateDTO {
public static final int REFUND_A = 22;
//违章押金退还
public static final int REFUND_B = 23;
//旅游内部通知(客服)
public static final int PAY_H = 24;
//取消旅游订单(客服)
public static final int CANCEL_F = 25;
//租车(取车提醒)26
public static final int PAY_I= 26;
//旅游(上车通知)27
public static final int PAY_J= 27;
......
package com.xxfc.platform.universal.biz;
import com.xxfc.platform.universal.service.SmsService;
import com.xxfc.platform.universal.utils.CCPRestSmsUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class AliYunSmsBiz {
//租车订单通知(普通用户)1
public static final String TEMPLATE_ID_ORDER = "SMS_173247815";
//租车订单短信(会员权益)2
public static final String TEMPLATE_ID_ORDER_MEMBER = "SMS_173252767";
//旅游订单短信3
public static final String TEMPLATE_ID_ORDER_TOUR = "SMS_173247826";
//加入会员通知4
public static final String TEMPLATE_ID_MEMBER = "SMS_173247829";
//租/还车公司相同(订单支付后立即发送给相关负责人)5
public static final String TEMPLATE_ID_TAAKE_CAR = "SMS_173247836";
//租/还车公司不同(发给租车公司负责人,订单支付后发送)6
public static final String TEMPLATE_ID_DIFFERENT_TAAKE_CAR = "458621";
// 租/还车公司不同(发给还车公司负责人,订单出车后发))(相同不发)7
public static final String TEMPLATE_ID_ALSO_CAR = "458620";
//取消订单9
public static final String TEMPLATE_ID_CANCEL = "458627";
//租车(通用)10
//public static final String TEMPLATE_ID_PAY_A = "460759";
public static final String TEMPLATE_ID_PAY_A = "SMS_171112286";
//租车(使用会员权益)11
//public static final String TEMPLATE_ID_PAY_B = "460760";
public static final String TEMPLATE_ID_PAY_B = "SMS_173340577";
//租车内部通知(客服)12
//public static final String TEMPLATE_ID_PAY_C = "460763";
public static final String TEMPLATE_ID_PAY_C = "SMS_173345572";
//租车内部通知(出车人)13
//public static final String TEMPLATE_ID_PAY_D = "460762";
public static final String TEMPLATE_ID_PAY_D = "SMS_173340609";
//租车内部通知(收车人)14
//public static final String TEMPLATE_ID_PAY_E = "460764";
public static final String TEMPLATE_ID_PAY_E = "SMS_173345589";
//旅游(通用)15
//public static final String TEMPLATE_ID_PAY_F = "460765";
public static final String TEMPLATE_ID_PAY_F = "SMS_173345597";
//会员购买(通用)16
//public static final String TEMPLATE_ID_PAY_G = "460766";
public static final String TEMPLATE_ID_PAY_G = "SMS_173340637";
//取消租车(通用)17
//public static final String TEMPLATE_ID_CANCEL_A= "460767";
public static final String TEMPLATE_ID_CANCEL_A= "SMS_173345633";
//取消租车(使用会员权益)18
//public static final String TEMPLATE_ID_CANCEL_B = "460768";
public static final String TEMPLATE_ID_CANCEL_B = "SMS_173340658";
//取消租车(通用扣违约金)19
//public static final String TEMPLATE_ID_CANCEL_C = "460769";
public static final String TEMPLATE_ID_CANCEL_C = "SMS_173345646";
//取消租车(会员权益&扣违 20
//public static final String TEMPLATE_ID_CANCEL_D = "460770";
public static final String TEMPLATE_ID_CANCEL_D = "SMS_173340671";
//取消租车(出车人)21
//public static final String TEMPLATE_ID_CANCEL_E = "460771";
public static final String TEMPLATE_ID_CANCEL_E = "SMS_173345667";
//租车押金退还 22
//public static final String TEMPLATE_ID_FINISH_A = "460772";
public static final String TEMPLATE_ID_FINISH_A = "SMS_173340710";
//违章押金退还 23
//public static final String TEMPLATE_ID_FINISH_B = "460773";
public static final String TEMPLATE_ID_FINISH_B = "SMS_173340712";
//旅游内部通知(客服)24
//public static final String TEMPLATE_ID_PAY_H = "461421";
public static final String TEMPLATE_ID_PAY_H = "SMS_173340630";
//取消旅游订单(客服)25
//public static final String TEMPLATE_ID_CANCEL_F = "461424";
public static final String TEMPLATE_ID_CANCEL_F = "SMS_173340695";
//租车(取车提醒)26
public static final String TEMPLATE_ID_PAY_I= "SMS_173345539";
//旅游(上车通知)27
public static final String TEMPLATE_ID_PAY_J= "SMS_173345606";
//发送模板消息
public void sendTemplateSMS(Integer type,String phoneNumbers,String[]params){
switch (type){
case 1 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_ORDER);
break;
case 2 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_ORDER_MEMBER);
break;
case 3 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_ORDER_TOUR);
break;
case 4 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_MEMBER);
break;
case 5 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_TAAKE_CAR);
break;
case 6 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_DIFFERENT_TAAKE_CAR);
break;
case 7 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_ALSO_CAR);
break;
case 8 :
CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_CANCEL);
break;
case 10 :
//CCPRestSmsUtils.sendTemplateSMS(phoneNumbers,params,TEMPLATE_ID_PAY_A);
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_A);
break;
case 11:
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_B);
break;
case 12 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_C);
break;
case 13 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_D);
break;
case 14 :
SmsService.sendTemplateToJson14(phoneNumbers,params,TEMPLATE_ID_PAY_E);
break;
case 15 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_F);
break;
case 16 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_G);
break;
case 17 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_CANCEL_A);
break;
case 18 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_CANCEL_B);
break;
case 19 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_CANCEL_C);
break;
case 20 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_CANCEL_D);
break;
case 21 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_CANCEL_E);
break;
case 22 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_FINISH_A);
break;
case 23 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_FINISH_B);
break;
case 24 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_H);
break;
case 25 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_CANCEL_F);
break;
case 26 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_I);
break;
case 27 :
SmsService.sendTemplateToJson(phoneNumbers,params,TEMPLATE_ID_PAY_J);
break;
}
}
}
......@@ -69,3 +69,5 @@ public class DictionaryController {
return ObjectRestResponse.succ();
}
}
......@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
import com.xxfc.platform.universal.biz.AliYunSmsBiz;
import com.xxfc.platform.universal.biz.CCPRestSmsBiz;
import com.xxfc.platform.universal.dto.SmsTemplateDTO;
import com.xxfc.platform.universal.service.SmsService;
......@@ -32,6 +33,9 @@ public class SmsController {
@Autowired
CCPRestSmsBiz smsBiz;
@Autowired
AliYunSmsBiz aliYunSmsBiz;
@RequestMapping(value = "/app/unauth/send", method = RequestMethod.GET) //匹配的是href中的download请求
public JSONObject sendSms(@RequestParam("phone") String phone) throws Exception {
return smsService.smsCode(phone);
......@@ -52,7 +56,7 @@ public class SmsController {
Integer type=smsTemplateDTO.getType();
String[] params=smsTemplateDTO.getParams();
String phoneNumbers=smsTemplateDTO.getPhoneNumbers();
smsBiz.sendTemplateSMS(type,phoneNumbers,params);
aliYunSmsBiz.sendTemplateSMS(type,phoneNumbers,params);
return ObjectRestResponse.succ();
}
}
......
......@@ -6,19 +6,9 @@ import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import com.github.wxiaoqi.security.common.util.RandomUtil;
import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
......@@ -43,6 +33,7 @@ public class SmsService {
//短信模板id
static final String TemplateCode = SystemConfig.TEMPLATECODE;
static final String TemplateParam="{\"code\":\"str\"}";
static final String param = "param";
public JSONObject smsCode(String mobile){
......@@ -157,7 +148,7 @@ public class SmsService {
return false;
}
public boolean sendTemplate(String PhoneNumbers,String params,String templateCode) throws ClientException {
public static boolean sendTemplate(String PhoneNumbers,String params,String templateCode) throws ClientException {
//可自助调整超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
......@@ -168,9 +159,9 @@ public class SmsService {
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
//组装请求对象
SendSmsRequest request = new SendSmsRequest ();
//必填:待发送手机号。支持JSON格式的批量调用,批量上限为100个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
request.setPhoneNumbers(PhoneNumbers);
//必填:短信签名-可在短信控制台中找到
request.setSignName(SignName);
......@@ -186,8 +177,8 @@ public class SmsService {
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
//request.setOutId("yourOutId");
//hint 此处可能会抛出异常,注意catch
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
log.info("短信接口返回的数据----------------mobile======"+PhoneNumbers+"----templateParam===="+params);
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
log.info("短信接口返回的数据--templateCode===="+templateCode+"--------mobile======"+PhoneNumbers+"----templateParam===="+params);
log.info("Code=" + sendSmsResponse.getCode());
log.info("Message=" + sendSmsResponse.getMessage());
log.info("RequestId=" + sendSmsResponse.getRequestId());
......@@ -200,60 +191,56 @@ public class SmsService {
return false;
}
public String getString(Map<String,Object> params){
if(params!=null){
StringBuilder sb = new StringBuilder("{");
for (Object o : params.keySet()) {
sb.append("\"" + o + "\"" +":"+"\"" + params.get(o) + "\"" +",");
}
sb.replace(sb.length() - 1, sb.length(), "}");
return sb.toString();
}
return null;
}
/* public static QuerySendDetailsResponse querySendDetails(String bizId) throws ClientException {
public static void sendTemplateToJson(String PhoneNumbers,String[] params,String templateCode){
try {
JSONObject jsonParams=new JSONObject();
for (int i=0;i<params.length;i++){
String para=params[i];
if (para.contains("【")){
para=para.replaceAll("【","");
}
if (para.contains("】")){
para=para.replaceAll("】","");
}
jsonParams.put(param+(i+1),para);
}
sendTemplate(PhoneNumbers,jsonParams.toJSONString(),templateCode);
}catch (Exception e){
e.printStackTrace();
}
//可自助调整超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
}
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
public static void sendTemplateToJson14(String PhoneNumbers,String[] params,String templateCode){
try {
JSONObject jsonParams=new JSONObject();
for (int i=0;i<params.length;i++){
String para=params[i];
if (para.contains("【")){
para=para.replaceAll("【","");
}
if (para.contains("】")){
para=para.replaceAll("】","");
}
if (i>3){
jsonParams.put(param+(i+2),para);
}else {
jsonParams.put(param+(i+1),para);
}
//组装请求对象
QuerySendDetailsRequest request = new QuerySendDetailsRequest();
//必填-号码
request.setPhoneNumber("15000000000");
//可选-流水号
request.setBizId(bizId);
//必填-发送日期 支持30天内记录查询,格式yyyyMMdd
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
request.setSendDate(ft.format(new Date()));
//必填-页大小
request.setPageSize(10L);
//必填-当前页码从1开始计数
request.setCurrentPage(1L);
}
sendTemplate(PhoneNumbers,jsonParams.toJSONString(),templateCode);
}catch (Exception e){
e.printStackTrace();
}
//hint 此处可能会抛出异常,注意catch
QuerySendDetailsResponse querySendDetailsResponse = acsClient.getAcsResponse(request);
}
return querySendDetailsResponse;
}
*/
public static void main(String[] args) throws ClientException, InterruptedException {
SmsService smsService=new SmsService();
//发短信
Map<String,Object> params=new HashMap<>();
params.put("name","何振");
params.put("code","123456");
params.put("time",5);
params.put("other","何振2");
smsService.sendTemplate("13612688539","123","SMS_171112286");
String[] params={"1","2","3","2019-08-29","【松山湖】"};
SmsService.sendTemplateToJson("13612688539,13265487972",params,"SMS_169904346");
/*System.out.println("短信接口返回的数据----------------");
System.out.println("Code=" + response.getCode());
System.out.println("Message=" + response.getMessage());
......
......@@ -27,6 +27,9 @@ public class FileUploadServiceImpl implements FileUploadService {
@Value("${universal.url}")
private String xx_url ;
private static final String APK_SUFFIX=".apk";
private static final String APK_NAME="xxfc.apk";
@Override
public ObjectRestResponse handlerUpload(MultipartFile zipFile,String password,String prefix)throws Exception {
if (null == zipFile) {
......@@ -63,7 +66,18 @@ public class FileUploadServiceImpl implements FileUploadService {
String path=readZipFile(packFilePath);
if (StringUtils.isNotBlank(path)){
String filename = path;
path=xx_url+"/"+prefix+"/"+path;
log.info("文件名:{}",path);
if (filename.contains(APK_SUFFIX)){
Runtime runtime = Runtime.getRuntime();
log.info("执行删除xxfc.apk");
//删除包
runtime.exec("rm -rf "+uploadPath+"/"+APK_NAME);
log.info("执行复制上传包为xxfc.apk");
//复制包
runtime.exec("cp -f "+uploadPath+"/"+filename+" "+uploadPath+"/"+APK_NAME);
}
return ObjectRestResponse.succ(path);
}else {
return ObjectRestResponse.createDefaultFail();
......
......@@ -18,6 +18,10 @@ public class BranchCompany {
@ApiModelProperty("主键id")
private Integer id;
@Column(name = "company_base_id")
@ApiModelProperty("主键id")
private Integer companyBaseId;
/**
* 分公司名称
*/
......@@ -39,6 +43,7 @@ public class BranchCompany {
private Integer subordinateBranch;
/**
* 地址-省/直辖市(编码)
*/
......@@ -46,6 +51,13 @@ public class BranchCompany {
@ApiModelProperty("地址-省/直辖市(编码)")
private Integer addrProvince;
/**
* 地址-省/直辖市(编码)名称
*/
@Column(name = "province_name")
@ApiModelProperty("地址-省/直辖市(编码)名称")
private String provinceName;
/**
* 地址-市(编码)
*/
......@@ -53,6 +65,14 @@ public class BranchCompany {
@ApiModelProperty("地址-市(编码)")
private Integer addrCity;
/**
* 地址-市(编码)名称
*/
@Column(name = "city_name")
@ApiModelProperty("地址-市(编码名称")
private String cityName;
/**
* 地址-镇/县(编码)
*/
......@@ -60,6 +80,13 @@ public class BranchCompany {
@ApiModelProperty("地址-镇/县(编码)")
private Integer addrTown;
/**
* 地址-县名称
*/
@Column(name = "town_name")
@ApiModelProperty("县名称")
private String townName;
/**
* 详细地址
*/
......@@ -119,4 +146,20 @@ public class BranchCompany {
@ApiModelProperty("旅游客服电话")
private String tourServicePhone;
/**
* 上下架:1-上架;2-下架
*/
private Integer state;
/**
* 是否app展示:1-是;2-否
*/
@Column(name = "is_show")
private Integer isShow;
/**
* 是否删除:0-正常;1-删除
*/
@Column(name = "is_del")
private Integer isDel;
}
\ No newline at end of file
......@@ -9,7 +9,7 @@ public class BranchCompanyStockApplyInfo {
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "JDBC")
private Integer id;
@Column(name = "company_id")
@Column(name = "company_base_id")
private Integer companyId;
/**
......
package com.xxfc.platform.vehicle.entity;
import lombok.Data;
import javax.persistence.*;
import java.math.BigDecimal;
@Data
@Table(name = "branch_company_stock_info_right")
public class BranchCompanyStockRight{
/**
* 分公司ID
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "JDBC")
private Integer id;
/**
* 有限公司id
*/
@Column(name = "company_base_id")
private Integer companyBaseId;
/**
* 剩余股份
*/
private Integer balance;
/**
* 股份总数
*/
private Integer total;
/**
* 股份单价
*/
private BigDecimal price;
/**
* 股价类型:1-万/股;2-港万/股
*/
private Integer type;
@Column(name = "stock_state")
private Integer stockState;
/**
* 创建时间
*/
@Column(name = "crt_time")
private Long crtTime;
/**
* 排序
*/
private Integer rank;
/**
* 更新时间
*/
@Column(name = "upd_time")
private Long updTime;
/**
* 是否删除:0-正常;1-删除
*/
@Column(name = "is_del")
private Integer isDel;
}
\ No newline at end of file
package com.xxfc.platform.vehicle.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Data
@Table(name = "company_base")
public class CompanyBase {
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键id")
private Integer id;
/**
* 分公司名称
*/
@ApiModelProperty("分公司名称")
private String name;
/**
* 公司封面
*/
@ApiModelProperty("公司封面")
private String cover;
/**
* 轮播图
*/
@ApiModelProperty("轮播图")
private String images;
/**
* 片区id
*/
@Column(name = "zone_id")
@ApiModelProperty("片区id")
private Integer zoneId;
/**
* 公司简介
*/
@ApiModelProperty("公司简介")
private String describes;
/**
* 详情
*/
@ApiModelProperty("详情")
private String content;
/**
* 地址-省/直辖市(编码)
*/
@Column(name = "addr_province")
@ApiModelProperty("地址-省/直辖市(编码)")
private Integer addrProvince;
/**
* 地址-市(编码)
*/
@Column(name = "addr_city")
@ApiModelProperty("地址-市(编码)")
private Integer addrCity;
/**
* 地址-镇/县(编码)
*/
@Column(name = "addr_town")
@ApiModelProperty("地址-镇/县(编码)")
private Integer addrTown;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty("创建时间")
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty("更新时间")
private Long updTime;
/**
* 是否删除:0-正常;1-删除
*/
@Column(name = "is_del")
@ApiModelProperty("更新时间")
private Integer isDel;
@Column(name = "province_name")
private String provinceName;
@Column(name = "city_name")
private String cityName;
@Column(name = "town_name")
private String townName;
}
\ No newline at end of file
......@@ -27,7 +27,4 @@ public class VehicleBookHourInfo {
@Column(name = "update_time")
private Date updateTime;
@Column(name = "book_record_id")
private Long bookRecordId;
}
\ No newline at end of file
......@@ -160,4 +160,8 @@ public class VehicleModel implements Serializable {
@Column(name = "sort")
@ApiModelProperty(value = "排序")
private Integer sort;
@Column(name = "intro")
@ApiModelProperty(value = "简介")
private String intro;
}
......@@ -2,14 +2,17 @@ package com.xxfc.platform.vehicle.feign;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.GoodDataVO;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo;
import com.xxfc.platform.vehicle.pojo.vo.BranComanyLeaderVo;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -39,6 +42,9 @@ public interface VehicleFeign {
@PostMapping("/active/small/arrival")
public RestResponse arrivalBySmall(@RequestBody VehicleArrivalVo arrivalVo);
@GetMapping(value = "/vehicleModel/app/unauth/findRandomVehicle")
public ObjectRestResponse findRandomVehicle(@RequestParam(value="number")Integer number);
//修改评分
@RequestMapping(value = "/vehicleModel/app/addScore", method = RequestMethod.GET)
public RestResponse addScore(@RequestParam(value="id")Integer id, @RequestParam(value="score")Integer score);
......@@ -77,8 +83,12 @@ public interface VehicleFeign {
@RequestMapping(value = "/user/license/company/getOne", method = RequestMethod.GET)
public RestResponse<VehicleUserLicense> getOne(
@RequestParam(value="id",defaultValue="0")Integer id) throws Exception ;
@RequestMapping(value = "/user/license/multi", method = RequestMethod.GET)
public ObjectRestResponse<List<VehicleUserLicense>> multi(QueryMultiDTO dto) throws Exception;
public ObjectRestResponse<List<VehicleUserLicense>> multi(@RequestBody QueryMultiDTO dto) throws Exception;
@GetMapping("/user/license/getVehicleLicenseList")
public ObjectRestResponse<List<VehicleUserLicense>> getVehicleLicenseList(@RequestParam(value="ids") String ids);
/**
* 获取优质车型接口
......@@ -123,4 +133,20 @@ public interface VehicleFeign {
@GetMapping("/branchCompany/company")
Map<Integer, BranComanyLeaderVo> findCompanyLeaderMapByIds(@RequestParam(value = "companyIds") List<Integer> companyIds);
@GetMapping("/vehicleModel/app/unauth/detail-param")
ObjectRestResponse<VModelDetailVO> detailByParam(@RequestParam("vehicleModel") Map<String, Object> vehicleModel);
@PostMapping("/vehicleModel/app/unauth/findVehicleModelPage")
public ObjectRestResponse<PageDataVO<VehicleModelVo>> findVehicleModelPageUnauthfind(@RequestBody VehicleModelQueryCondition vmqc);
//cata
/**
* 查询当前车型拥有的标签
* @param ids
* @return
*/
@GetMapping("/cata/add/getCatasByIds/{ids}")
public ObjectRestResponse<List<VehiclePlatCata>> getCatasByIds(@PathVariable("ids") String ids);
}
......@@ -8,6 +8,7 @@ import lombok.Data;
@Data
public class BranchCompanyStockApplyVo {
Integer companyId;
Integer stockRightId;
String name;
String tel;
Integer count;
......
......@@ -109,7 +109,7 @@ public class ResultVehicleVo {
*/
private Date maintenanceDate;
/**
* 保养公里
* 当前公里数
*/
private Integer mileage;
......
......@@ -19,4 +19,9 @@ public class VModelDetailVO extends VehicleModel {
@ApiModelProperty("会员列表")
List<BaseUserMemberLevel> userMemberLevel;
/**
* 官网需要显示的配置列表
*/
List<VehiclePlatCata> UccnCataList;
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.xxfc.platform.vehicle.pojo;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -12,6 +13,7 @@ import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
......@@ -25,128 +27,6 @@ import java.util.Date;
@Table(name = "vehicle_model")
public class VehicleModelVo extends VehicleModel implements Serializable {
private static final long serialVersionUID = 1L;
//主键
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
//名称
@Column(name = "name")
@ApiModelProperty(value = "名称")
private String name;
//房车配置,code逗号分割
@Column(name = "config")
@ApiModelProperty(value = "房车配置,code逗号分割")
private String config;
@Column(name = "number")
@ApiModelProperty(value = "乘卧数id")
private String number;
@Column(name = "brand")
@ApiModelProperty(value = "品牌id")
private String brand;
//关键标签,code逗号分割
@Column(name = "keyword")
@ApiModelProperty(value = "关键标签,code逗号分割")
private String keyword;
//车型详情
@Column(name = "models_details")
@ApiModelProperty(value = "车型详情")
private String modelsDetails;
//参数
@Column(name = "model_param")
@ApiModelProperty(value = "参数")
private String modelParam;
//图片地址 多张为逗号分割
@Column(name = "picture")
@ApiModelProperty(value = "图片地址 多张为逗号分割")
private String picture;
//价格
@Column(name = "price")
@ApiModelProperty(value = "价格")
private BigDecimal price;
//总押金
@Column(name = "deposit")
@ApiModelProperty(value = "总押金")
private BigDecimal deposit;
//违章押金
@Column(name = "vio_deposit")
@ApiModelProperty(value = "违章押金")
private BigDecimal vioDeposit;
//创建时间
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Date crtTime;
//创建者id
@Column(name = "crt_user")
@ApiModelProperty(value = "创建者id")
private Integer crtUser;
//创建者名称
@Column(name = "crt_name")
@ApiModelProperty(value = "创建者名称")
private String crtName;
//创建者host
@Column(name = "crt_host")
@ApiModelProperty(value = "创建者host")
private String crtHost;
//修改时间
@Column(name = "upd_time")
@ApiModelProperty(value = "修改时间", hidden = true )
private Date updTime;
//修改者
@Column(name = "upd_user")
@ApiModelProperty(value = "修改者")
private Integer updUser;
//修改者名称
@Column(name = "upd_name")
@ApiModelProperty(value = "修改者名称")
private String updName;
//修改者host
@Column(name = "upd_host")
@ApiModelProperty(value = "修改者host")
private String updHost;
//评分
@Column(name = "score")
@ApiModelProperty(value = "评分")
private Integer score;
@Column(name = "hot_sign")
@ApiModelProperty(value = "热度标记,1--热门;2--非热门")
private Integer hotSign;
@ApiModelProperty(value = "是否删除")
private Integer isdel;
@Column(name = "rent_discount_status")
@ApiModelProperty(value = "租车优惠状态 0--没有优惠;1--会员折扣;2--固定值")
private Integer rentDiscountStatus;
@Column(name = "rent_discount_price")
@ApiModelProperty(value = "租车优惠价格")
private String rentDiscountPrice;
@Column(name = "buy_price")
@ApiModelProperty(value = "购买价格")
private BigDecimal buyPrice;
@ApiModelProperty(value = "总数量")
private Integer sum;
......@@ -168,17 +48,9 @@ public class VehicleModelVo extends VehicleModel implements Serializable {
@ApiModelProperty(value = "品牌")
private String brandName;
@Column(name = "sort")
@ApiModelProperty(value = "排序")
private Integer sort;
// @Column(name = "status")
// @ApiModelProperty(value = "状态 0--下架;1--上架")
// private String status;
// @Column(name = "cover_pic")
// @ApiModelProperty(value = "封面图")
// private String coverPic;
/**
* 官网需要显示的配置列表
*/
List<VehiclePlatCata> UccnCataList;
}
package com.xxfc.platform.vehicle.pojo.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/23 16:27
*/
@Data
public class BranchCompanyFindDTO extends PageParam {
private Integer addrProvince;
private Integer addrCity;
}
package com.xxfc.platform.vehicle.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/23 16:06
*/
@Data
public class BranchCompanyListDTO {
private Integer comnpanyBaseId;
/**
* 分公司名称
*/
@ApiModelProperty("分公司名称")
private String name;
/**
* 公司封面
*/
@ApiModelProperty("公司封面")
private String cover;
@ApiModelProperty("地址-省/直辖市")
private String provinceName;
@ApiModelProperty("地址-市")
private String cityName;
@ApiModelProperty("地址-镇/县")
private String townName;
@ApiModelProperty("具体地址")
private String address;
/**
* 负责人
*/
@ApiModelProperty("负责人")
private String leader;
/**
* 负责人联系方式
*/
@ApiModelProperty("负责人联系方式")
private String leaderContactInfo;
/**
*公司地址-纬度
*/
@ApiModelProperty("公司地址-纬度")
private BigDecimal latitude;
/**
* 公司地址-经度
*/
@ApiModelProperty("公司地址-经度")
private BigDecimal longitude;
}
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