Browse Source

20220118开放平台接口测试

master
zy_Java 4 years ago
parent
commit
2615367e6b
  1. 1
      cloudutil/src/main/java/com/ccsens/cloudutil/aspect/MustLoginAspect.java
  2. 2
      ptos_open/src/main/java/com/ccsens/ptos_open/PtosOpenApplication.java
  3. 10
      ptos_open/src/main/java/com/ccsens/ptos_open/api/BusinessController.java
  4. 37
      ptos_open/src/main/java/com/ccsens/ptos_open/api/CcsensTestController.java
  5. 5
      ptos_open/src/main/java/com/ccsens/ptos_open/api/PluginController.java
  6. 4
      ptos_open/src/main/java/com/ccsens/ptos_open/bean/dto/BusinessDto.java
  7. 1
      ptos_open/src/main/java/com/ccsens/ptos_open/bean/dto/PluginDto.java
  8. 6
      ptos_open/src/main/java/com/ccsens/ptos_open/bean/vo/BusinessVo.java
  9. 40
      ptos_open/src/main/java/com/ccsens/ptos_open/persist/dao/BusinessDao.java
  10. 31
      ptos_open/src/main/java/com/ccsens/ptos_open/persist/dao/PluginDao.java
  11. 87
      ptos_open/src/main/java/com/ccsens/ptos_open/service/BusinessService.java
  12. 2
      ptos_open/src/main/java/com/ccsens/ptos_open/service/IBusinessService.java
  13. 54
      ptos_open/src/main/java/com/ccsens/ptos_open/service/PluginService.java
  14. 52
      ptos_open/src/main/java/com/ccsens/ptos_open/util/GenerateAppIdUtil.java
  15. 9
      ptos_open/src/main/java/com/ccsens/ptos_open/util/OpenCodeError.java
  16. 65
      ptos_open/src/main/resources/mapper_dao/BusinessDao.xml
  17. 43
      ptos_open/src/main/resources/mapper_dao/PluginDao.xml
  18. 1
      ptos_tall/pom.xml
  19. 2
      ptos_tall/src/main/java/com/ccsens/ptos_tall/PtosTallApplication.java
  20. 1
      ptos_tall/src/main/java/com/ccsens/ptos_tall/api/ProjectController.java
  21. 21
      ptos_tall/src/main/java/com/ccsens/ptos_tall/api/TestController.java
  22. 13
      ptos_tall/src/main/java/com/ccsens/ptos_tall/api/UserController.java
  23. 9
      ptos_tall/src/main/java/com/ccsens/ptos_tall/service/IUserService.java
  24. 3
      ptos_tall/src/main/java/com/ccsens/ptos_tall/service/ProjectService.java
  25. 113
      ptos_tall/src/main/java/com/ccsens/ptos_tall/service/UserService.java
  26. 3
      ptos_tall/src/main/java/com/ccsens/ptos_tall/util/PtOsCodeError.java
  27. 1
      ptos_tall/src/main/resources/mapper_dao/SysUserDao.xml
  28. 33
      test_controller/.gitignore
  29. 331
      test_controller/mvnw
  30. 188
      test_controller/mvnw.cmd
  31. 83
      test_controller/pom.xml
  32. 13
      test_controller/src/main/java/com/ccsens/test_controller/TestControllerApplication.java
  33. 25
      test_controller/src/main/java/com/ccsens/test_controller/api/CcsensTestController.java
  34. 1
      test_controller/src/main/resources/application.properties
  35. 13
      test_controller/src/test/java/com/ccsens/test_controller/TestControllerApplicationTests.java
  36. 1
      util/src/main/java/com/ccsens/util/WebConstant.java

1
cloudutil/src/main/java/com/ccsens/cloudutil/aspect/MustLoginAspect.java

@ -56,6 +56,7 @@ public class MustLoginAspect {
final String deviceId = request.getHeader("deviceId");
//TODO 获取客户端类型
final String clientType = request.getHeader("clientType");
//TODO 获取ip地址
final String clientIp = ServletUtil.getClientIP(request);

2
ptos_open/src/main/java/com/ccsens/ptos_open/PtosOpenApplication.java

@ -15,7 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @author
*/
@MapperScan(basePackages = {"com.ccsens.ptos_tall.persist.*","com.ccsens.common.persist.*"})
@MapperScan(basePackages = {"com.ccsens.ptos_open.persist.*","com.ccsens.common.persist.*"})
@ServletComponentScan
@EnableAsync
//开启断路器功能

10
ptos_open/src/main/java/com/ccsens/ptos_open/api/BusinessController.java

@ -1,5 +1,6 @@
package com.ccsens.ptos_open.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.ptos_open.bean.dto.BusinessDto;
import com.ccsens.ptos_open.bean.vo.BusinessVo;
import com.ccsens.ptos_open.bean.vo.PluginVo;
@ -31,15 +32,17 @@ public class BusinessController {
@Resource
private IBusinessService businessService;
@MustLogin
@ApiOperation(value = "查询业务列表", notes = "")
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<BusinessVo.BusinessInfo>> queryBusiness(@ApiParam @Validated @RequestBody QueryDto<BusinessDto.QueryByPage> params) throws Exception{
log.info("查询业务列表:{}",params);
PageInfo<PluginVo.PluginInfo> pluginInfoPageInfo = businessService.queryBusiness(params.getParam(),params.getUserId());
PageInfo<BusinessVo.BusinessInfo> businessInfos = businessService.queryBusiness(params.getParam(),params.getUserId());
log.info("分页返回业务信息");
return JsonResponse.newInstance().ok(pluginInfoPageInfo);
return JsonResponse.newInstance().ok(businessInfos);
}
@MustLogin
@ApiOperation(value = "添加业务信息", notes = "")
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse saveBusiness(@ApiParam @Validated @RequestBody QueryDto<BusinessDto.SaveBusiness> params) throws Exception{
@ -49,6 +52,7 @@ public class BusinessController {
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "关联业务和插件", notes = "")
@RequestMapping(value = "/relevance", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse relevancePlugin(@ApiParam @Validated @RequestBody QueryDto<BusinessDto.RelevancePlugin> params) throws Exception{
@ -58,6 +62,7 @@ public class BusinessController {
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "查询业务下关联的插件", notes = "")
@RequestMapping(value = "/queryPlugin", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<BusinessVo.BusinessPlugin>> queryPlugin(@ApiParam @Validated @RequestBody QueryDto<BusinessDto.BusinessQueryPlugin> params) throws Exception{
@ -67,6 +72,7 @@ public class BusinessController {
return JsonResponse.newInstance().ok(businessPluginPageInfo);
}
@MustLogin
@ApiOperation(value = "修改业务下的插件配置信息", notes = "")
@RequestMapping(value = "/updateConfig", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse updateConfig(@ApiParam @Validated @RequestBody QueryDto<BusinessDto.UpdateConfig> params) throws Exception{

37
ptos_open/src/main/java/com/ccsens/ptos_open/api/CcsensTestController.java

@ -0,0 +1,37 @@
//package com.ccsens.ptos_open.api;
//
//import com.ccsens.cloudutil.annotation.MustLogin;
//import com.ccsens.ptos_open.bean.dto.BusinessDto;
//import com.ccsens.ptos_open.bean.vo.BusinessVo;
//import com.ccsens.util.JsonResponse;
//import com.ccsens.util.bean.dto.QueryDto;
//import com.github.pagehelper.PageInfo;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.RestController;
//
///**
// * @author 逗
// */
//@RestController
//@RequestMapping("/business")
//public interface CcsensTestController {
//
//
// @MustLogin
// @ApiOperation(value = "查询业务列表", notes = "")
// @RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
// JsonResponse<PageInfo<BusinessVo.BusinessInfo>> queryBusiness(@ApiParam @Validated @RequestBody QueryDto<BusinessDto.QueryByPage> params);
//
// @MustLogin
// @ApiOperation(value = "添加业务信息", notes = "")
// @RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
// JsonResponse saveBusiness(@ApiParam @Validated @RequestBody QueryDto<BusinessDto.SaveBusiness> params);
//
//}

5
ptos_open/src/main/java/com/ccsens/ptos_open/api/PluginController.java

@ -1,5 +1,6 @@
package com.ccsens.ptos_open.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.ptos_open.bean.dto.PluginDto;
import com.ccsens.ptos_open.bean.vo.PluginVo;
import com.ccsens.ptos_open.service.IPluginService;
@ -31,7 +32,7 @@ public class PluginController {
private IPluginService pluginService;
//TODO 开放平台的身份验证
// @MustLogin
@MustLogin
@ApiOperation(value = "查询插件列表", notes = "")
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<PluginVo.PluginInfo>> queryPlugin(@ApiParam @Validated @RequestBody QueryDto<PluginDto.QueryByPage> params) throws Exception{
@ -42,7 +43,7 @@ public class PluginController {
}
// @MustLogin
@MustLogin
@ApiOperation(value = "创建插件", notes = "")
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse savePlugin(@ApiParam @Validated @RequestBody QueryDto<PluginDto.SavePlugin> params) throws Exception{

4
ptos_open/src/main/java/com/ccsens/ptos_open/bean/dto/BusinessDto.java

@ -17,8 +17,8 @@ public class BusinessDto {
public static class QueryByPage{
@ApiModelProperty("业务名称,为空则不实用该条件")
private String name;
@ApiModelProperty("启用状态")
private Byte type;
@ApiModelProperty("启用状态 0未启用 1启用")
private Byte pub;
@ApiModelProperty("查询深度 0则只查名称,1则查询全部")
private Byte depth = 0;
@ApiModelProperty("第几页")

1
ptos_open/src/main/java/com/ccsens/ptos_open/bean/dto/PluginDto.java

@ -49,5 +49,6 @@ public class PluginDto {
private String config;
@ApiModelProperty("是否公开 0不公开 1公开")
private byte publish;
}
}

6
ptos_open/src/main/java/com/ccsens/ptos_open/bean/vo/BusinessVo.java

@ -43,9 +43,9 @@ public class BusinessVo {
@ApiModelProperty("config")
private String config;
@ApiModelProperty("是否开启debug模式")
private byte debug;
@ApiModelProperty("是否公开 0不公开 1公开")
private byte publish;
private Byte debug;
@ApiModelProperty("插件id")
private Long pluginId;
@ApiModelProperty("版本号")
private String versions;
@ApiModelProperty("简介")

40
ptos_open/src/main/java/com/ccsens/ptos_open/persist/dao/BusinessDao.java

@ -0,0 +1,40 @@
package com.ccsens.ptos_open.persist.dao;
import com.ccsens.ptos_open.bean.vo.BusinessVo;
import com.ccsens.ptos_open.persist.mapper.OpenBusinessMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author
*/
@Repository
public interface BusinessDao extends OpenBusinessMapper {
/**
* 查询自己所有的业务新
* @param depth 查询深度
* @param name 业务名
* @param pub 启用状态
* @param userId userId
* @return 返回业务信息
*/
List<BusinessVo.BusinessInfo> queryBusinessList(@Param("depth") Byte depth, @Param("name") String name, @Param("pub") Byte pub, @Param("userId") Long userId);
/**
* 通过id判断业务是否存在
* @param businessId 业务id
* @return 返回 true/false
*/
Boolean verifyById(@Param("businessId") Long businessId);
/**
* 查找业务下关联的插件
* @param businessId 业务id
* @param userId userId
* @return 返回业务下的插件信息
*/
List<BusinessVo.BusinessPlugin> businessQueryPlugin(@Param("businessId")Long businessId,@Param("userId")Long userId);
}

31
ptos_open/src/main/java/com/ccsens/ptos_open/persist/dao/PluginDao.java

@ -0,0 +1,31 @@
package com.ccsens.ptos_open.persist.dao;
import com.ccsens.ptos_open.bean.vo.PluginVo;
import com.ccsens.ptos_open.persist.mapper.OpenPluginMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author
*/
@Repository
public interface PluginDao extends OpenPluginMapper {
/**
* 查询插件列表
* @param name 插件名称
* @param depth 查询深度
* @param userId userId
* @return 返回插件列表
*/
List<PluginVo.PluginInfo> queryPluginList(@Param("name") String name, @Param("depth") Byte depth, @Param("userId") Long userId);
/**
* 验证插件是否存在
* @param pluginId 插件id
* @return 返回true/false
*/
Boolean verifyById(@Param("pluginId") Long pluginId);
}

87
ptos_open/src/main/java/com/ccsens/ptos_open/service/BusinessService.java

@ -1,14 +1,30 @@
package com.ccsens.ptos_open.service;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.ptos_open.bean.dto.BusinessDto;
import com.ccsens.ptos_open.bean.po.OpenBusiness;
import com.ccsens.ptos_open.bean.po.OpenBusinessPlugin;
import com.ccsens.ptos_open.bean.po.OpenPluginWithBLOBs;
import com.ccsens.ptos_open.bean.vo.BusinessVo;
import com.ccsens.ptos_open.bean.vo.PluginVo;
import com.ccsens.ptos_open.persist.dao.BusinessDao;
import com.ccsens.ptos_open.persist.dao.PluginDao;
import com.ccsens.ptos_open.persist.mapper.OpenBusinessPluginMapper;
import com.ccsens.ptos_open.util.GenerateAppIdUtil;
import com.ccsens.ptos_open.util.OpenCodeError;
import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@ -16,28 +32,89 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class BusinessService implements IBusinessService {
@Resource
private BusinessDao businessDao;
@Resource
private Snowflake snowflake;
@Resource
private PluginDao pluginDao;
@Resource
private OpenBusinessPluginMapper businessPluginMapper;
@Override
public PageInfo<PluginVo.PluginInfo> queryBusiness(BusinessDto.QueryByPage param, Long userId) {
return null;
public PageInfo<BusinessVo.BusinessInfo> queryBusiness(BusinessDto.QueryByPage param, Long userId) {
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<BusinessVo.BusinessInfo> pluginInfos = businessDao.queryBusinessList(param.getDepth(), param.getName(),param.getPub(),userId);
return new PageInfo<>(pluginInfos);
}
@Override
public void saveBusiness(BusinessDto.SaveBusiness param, Long userId) {
//TODO 验证用户权限
//添加业务
OpenBusiness openBusiness = new OpenBusiness();
openBusiness.setId(snowflake.nextId());
//TODO 生成业务code
openBusiness.setCode(openBusiness.getId().toString());
openBusiness.setName(param.getName());
openBusiness.setDescription(param.getDescription());
openBusiness.setUrl(param.getUrl());
openBusiness.setStartUsing(param.getStartUsing());
openBusiness.setPub(param.getPub());
openBusiness.setDebug(param.getDebug());
openBusiness.setCreatorId(userId);
//TODO 生成appId和secret
GenerateAppIdUtil.AppIdAndSecret generate = GenerateAppIdUtil.generate();
openBusiness.setAppId(generate.getAppId());
openBusiness.setSecret(generate.getSecret());
businessDao.insertSelective(openBusiness);
}
@Override
public void relevancePlugin(BusinessDto.RelevancePlugin param, Long userId) {
//判断插件是否存在
Boolean p = pluginDao.verifyById(param.getPluginId());
if(!p){
throw new BaseException(OpenCodeError.NOT_PLUGIN);
}
//判断业务是否存在
Boolean b = businessDao.verifyById(param.getPluginId());
if(!b){
throw new BaseException(OpenCodeError.NOT_BUSINESS);
}
//添加业务插件关联关系
OpenBusinessPlugin businessPlugin = new OpenBusinessPlugin();
businessPlugin.setId(snowflake.nextId());
businessPlugin.setBusinessId(param.getBusinessId());
businessPlugin.setPluginId(param.getPluginId());
//TODO 生成业务内唯一code
businessPlugin.setCode(snowflake.nextId() + "");
businessPluginMapper.insertSelective(businessPlugin);
}
@Override
public PageInfo<BusinessVo.BusinessPlugin> businessQueryPlugin(BusinessDto.BusinessQueryPlugin param, Long userId) {
return null;
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<BusinessVo.BusinessPlugin> businessPluginList = businessDao.businessQueryPlugin(param.getBusinessId(),userId);
return new PageInfo<>(businessPluginList);
}
@Override
public void updateConfig(BusinessDto.UpdateConfig param, Long userId) {
//检查关联的插件是否存在
OpenBusinessPlugin businessPlugin = businessPluginMapper.selectByPrimaryKey(param.getBusinessPluginId());
if(ObjectUtil.isNull(businessPlugin)){
throw new BaseException(OpenCodeError.NOT_PLUGIN);
}
Boolean p = pluginDao.verifyById(businessPlugin.getPluginId());
if(!p){
throw new BaseException(OpenCodeError.NOT_PLUGIN);
}
//修改关联的信息
businessPlugin.setConfig(param.getConfig());
businessPlugin.setDebug(param.getDebug());
businessPluginMapper.updateByPrimaryKeySelective(businessPlugin);
}
}

2
ptos_open/src/main/java/com/ccsens/ptos_open/service/IBusinessService.java

@ -16,7 +16,7 @@ public interface IBusinessService {
* @param userId userId
* @return 返回业务信息
*/
PageInfo<PluginVo.PluginInfo> queryBusiness(BusinessDto.QueryByPage param, Long userId);
PageInfo<BusinessVo.BusinessInfo> queryBusiness(BusinessDto.QueryByPage param, Long userId);
/**
* 添加业务信息

54
ptos_open/src/main/java/com/ccsens/ptos_open/service/PluginService.java

@ -1,13 +1,27 @@
package com.ccsens.ptos_open.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.ptos_open.bean.dto.PluginDto;
import com.ccsens.ptos_open.bean.po.OpenPlugin;
import com.ccsens.ptos_open.bean.po.OpenPluginImg;
import com.ccsens.ptos_open.bean.po.OpenPluginWithBLOBs;
import com.ccsens.ptos_open.bean.vo.PluginVo;
import com.ccsens.ptos_open.persist.dao.PluginDao;
import com.ccsens.ptos_open.persist.mapper.OpenPluginImgMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* @author
*/
@ -15,13 +29,49 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class PluginService implements IPluginService {
@Resource
private PluginDao pluginDao;
@Resource
private Snowflake snowflake;
@Resource
private OpenPluginImgMapper openPluginImgMapper;
@Override
public PageInfo<PluginVo.PluginInfo> queryPlugin(PluginDto.QueryByPage param, Long userId) {
return null;
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<PluginVo.PluginInfo> pluginInfos = pluginDao.queryPluginList(param.getName(),param.getDepth(),userId);
return new PageInfo<>(pluginInfos);
}
@Override
public void savePlugin(PluginDto.SavePlugin param, Long userId) {
//TODO 验证用户权限
//添加插件
OpenPluginWithBLOBs openPlugin = new OpenPluginWithBLOBs();
BeanUtil.copyProperties(param,openPlugin);
openPlugin.setId(snowflake.nextId());
openPlugin.setCreatorId(userId);
pluginDao.insertSelective(openPlugin);
//保存预览图
if(StrUtil.isNotBlank(param.getPreview())){
OpenPluginImg pluginImg = new OpenPluginImg();
pluginImg.setId(snowflake.nextId());
pluginImg.setPluginId(openPlugin.getId());
pluginImg.setType((byte) 0);
pluginImg.setFilePath(param.getPreview());
openPluginImgMapper.insertSelective(pluginImg);
}
//保存轮播图
if(CollectionUtil.isNotEmpty(param.getCarousel())){
param.getCarousel().forEach(path -> {
OpenPluginImg pluginImg = new OpenPluginImg();
pluginImg.setId(snowflake.nextId());
pluginImg.setPluginId(openPlugin.getId());
pluginImg.setType((byte) 1);
pluginImg.setFilePath(path);
openPluginImgMapper.insertSelective(pluginImg);
});
}
}
}

52
ptos_open/src/main/java/com/ccsens/ptos_open/util/GenerateAppIdUtil.java

@ -0,0 +1,52 @@
package com.ccsens.ptos_open.util;
import cn.hutool.core.lang.Snowflake;
import com.ccsens.util.message.SwitchoverProjectUtil;
import lombok.Data;
import org.apache.commons.lang.RandomStringUtils;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
/**
* @author
*/
public class GenerateAppIdUtil {
@Resource
private Snowflake snowflake;
private static GenerateAppIdUtil util;
@PostConstruct
public void init(){
util = this;
util.snowflake = this.snowflake;
}
@Data
public static class AppIdAndSecret{
private String appId;
private String secret;
public AppIdAndSecret() {
}
public AppIdAndSecret(String appId, String secret) {
this.appId = appId;
this.secret = secret;
}
}
/**
* 生成appId和secret
* @return 返回
*/
public static AppIdAndSecret generate(){
//TODO 生成APP_ID 使用snowflake
// long appId = util.snowflake.nextId();
//TODO 生成secret 随机生成48位字符
String secret= RandomStringUtils.randomAlphanumeric(48);
return new AppIdAndSecret( "", secret);
}
}

9
ptos_open/src/main/java/com/ccsens/ptos_open/util/OpenCodeError.java

@ -7,11 +7,8 @@ import com.ccsens.util.CodeError;
*/
public class OpenCodeError extends CodeError {
public static final Code ILLEGAL_LOG_IN = new Code(401,"非法登录",true);
public static final Code CLIENT_ERROR = new Code(501,"客户端类型异常",true);
public static final Code SIGNIN_TYPE_ERROR = new Code(502,"登录类型异常",true);
public static final Code NOT_PHONE = new Code(503,"手机号不能为空",true);
public static final Code NOT_SMS_CODE = new Code(504,"请填写手机号验证码",true);
public static final Code ERROR_SEND_TOO_FAST = new Code(504,"60秒内只能发送一次,请稍后再试",true);
public static final Code ILLEGAL_LOG_IN = new Code(400,"非法登录",true);
public static final Code NOT_PLUGIN = new Code(501,"插件不存在",true);
public static final Code NOT_BUSINESS = new Code(502,"找不到对应的业务",true);
}

65
ptos_open/src/main/resources/mapper_dao/BusinessDao.xml

@ -0,0 +1,65 @@
<?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.ccsens.ptos_open.persist.dao.BusinessDao">
<select id="queryBusinessList" resultType="com.ccsens.ptos_open.bean.vo.BusinessVo$BusinessInfo">
SELECT
id,
`name`
<if test="depth == 1">
,
app_id as appId,
secret,
start_using as startUsing,
pub,
UNIX_TIMESTAMP(created_at) * 1000 as createTime
</if>
FROM
`t_open_business`
WHERE
creator_id = 2
and rec_status = 0
<if test="pub != null">
and pub = 0
</if>
<if test="name != null and name != ''">
and `name` like concat('%',#{name, jdbcType=VARCHAR},'%')
</if>
</select>
<select id="verifyById" resultType="java.lang.Boolean">
select
if(id = null, 0, 1)
from
t_open_business
where
id = #{businessId}
and rec_status = 0
</select>
<select id="businessQueryPlugin" resultType="com.ccsens.ptos_open.bean.vo.BusinessVo$BusinessPlugin">
SELECT
bp.id as businessPluginId,
bp.`code`,
p.`name`,
if(bp.config = null,p.config,bp.config) as config,
bp.debug,
p.id as pluginId,
p.versions,
p.intro,
UNIX_TIMESTAMP(p.updated_at) * 1000 as updatedTime,
p.creator_id as authorId,
(SELECT `name` FROM t_sys_user WHERE id = p.creator_id and rec_status = 0 limit 1) as authorName,
if(p.creator_id = #{userId}, 1, 0) as mine,
i.file_path as preview,
p.html,
p.css,
p.js
FROM
t_open_business_plugin bp
LEFT JOIN t_open_plugin p on bp.plugin_id = p.id and p.rec_status = 0
LEFT JOIN t_open_plugin_img i on p.id = i.plugin_id and i.type = 0 and i.rec_status = 0
WHERE
bp.business_id = #{businessId}
and bp.rec_status = 0
</select>
</mapper>

43
ptos_open/src/main/resources/mapper_dao/PluginDao.xml

@ -0,0 +1,43 @@
<?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.ccsens.ptos_open.persist.dao.PluginDao">
<select id="queryPluginList" resultType="com.ccsens.ptos_open.bean.vo.PluginVo$PluginInfo">
SELECT
p.id,
p.`name`
<if test="depth == 1">
,
p.versions,
p.intro,
UNIX_TIMESTAMP(p.updated_at) * 1000 as updatedTime,
p.creator_id as authorId,
i.file_path as preview,
(SELECT `name` FROM t_sys_user WHERE id = p.creator_id and rec_status = 0 limit 1) as authorName,
if(p.creator_id = #{userId}, 1, 0) as mine,
p.html,
p.css,
p.js,
p.config
</if>
FROM
t_open_plugin p
LEFT JOIN t_open_plugin_img i on p.id = i.plugin_id and i.type = 0 and i.rec_status = 0
WHERE
p.rec_status = 0
<if test="name != null and name != ''">
and p.`name` like concat('%',#{name, jdbcType=VARCHAR},'%')
</if>
ORDER BY p.id
</select>
<select id="verifyById" resultType="java.lang.Boolean">
select
if(id = null, 0, 1)
from
t_open_plugin
where
id = #{pluginId}
and rec_status = 0
</select>
</mapper>

1
ptos_tall/pom.xml

@ -26,7 +26,6 @@
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.ccsens</groupId>
<artifactId>util</artifactId>

2
ptos_tall/src/main/java/com/ccsens/ptos_tall/PtosTallApplication.java

@ -15,7 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @author
*/
@MapperScan(basePackages = {"com.ccsens.ptos_tall.persist.*","com.ccsens.common.persist.*"})
@MapperScan(basePackages = {"com.ccsens.ptos_tall.persist.*","com.ccsens.common.persist.*","com.ccsens.ptos_open.api.CcsensTestController"})
@ServletComponentScan
@EnableAsync
@EnableScheduling

1
ptos_tall/src/main/java/com/ccsens/ptos_tall/api/ProjectController.java

@ -41,6 +41,7 @@ public class ProjectController {
return JsonResponse.newInstance().ok(projectInfoList);
}
@MustLogin
@ApiOperation(value = "查询日历是否有小红点", notes = "查询日历是否有小红点")
@RequestMapping(value = "/day", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<String>> haveProjectDay(@ApiParam @Validated @RequestBody QueryDto<ProjectDto.QueryHaveProject> params) throws Exception{

21
ptos_tall/src/main/java/com/ccsens/ptos_tall/api/TestController.java

@ -0,0 +1,21 @@
//package com.ccsens.ptos_tall.api;
//
//import com.ccsens.ptos_open.api.CcsensTestController;
//import com.ccsens.ptos_open.bean.dto.BusinessDto;
//import com.ccsens.ptos_open.bean.vo.BusinessVo;
//import com.ccsens.util.JsonResponse;
//import com.ccsens.util.bean.dto.QueryDto;
//import com.github.pagehelper.PageInfo;
//
//public class TestController implements CcsensTestController {
//
// @Override
// public JsonResponse<PageInfo<BusinessVo.BusinessInfo>> queryBusiness(QueryDto<BusinessDto.QueryByPage> params) {
// return JsonResponse.newInstance().ok(null,"werwer","werwer");
// }
//
// @Override
// public JsonResponse saveBusiness(QueryDto<BusinessDto.SaveBusiness> params) {
// return null;
// }
//}

13
ptos_tall/src/main/java/com/ccsens/ptos_tall/api/UserController.java

@ -72,9 +72,19 @@ public class UserController {
return JsonResponse.newInstance().ok(vertifyCode);
}
@ApiOperation(value = "根据refreshToken重新获取token",notes = "")
@ApiImplicitParams({
})
@RequestMapping(value = "refreshToken",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"})
public JsonResponse getTokenByRefreshToken(@RequestParam(required = true) String refreshToken) throws Exception {
log.info("根据refreshToken重新获取token:{}",refreshToken);
String token = userService.getTokenByRefreshToken(refreshToken);
return JsonResponse.newInstance().ok(null,token,refreshToken);
}
@ApiOperation(value = "根据token/deviceId获取用户信息",notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name="token",value = "token",required = true,paramType = "query")
})
@RequestMapping(value = "token",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
public JsonResponse<UserVo.TokenToUserId> getUserByToken(@ApiParam @Validated @RequestBody UserDto.UserInfoByToken params) throws Exception {
@ -83,4 +93,5 @@ public class UserController {
return JsonResponse.newInstance().ok(tokenToUserId);
}
}

9
ptos_tall/src/main/java/com/ccsens/ptos_tall/service/IUserService.java

@ -49,5 +49,12 @@ public interface IUserService {
/**
* 生成token
*/
UserVo.TokenBean generateToken(Object subject, Map<String, Object> payLoads);
UserVo.TokenBean generateToken(Long userId, Object authId);
/**
* 根据refresh获取token
* @param refreshToken 刷新token
* @return 返回重新生成的token
*/
String getTokenByRefreshToken(String refreshToken);
}

3
ptos_tall/src/main/java/com/ccsens/ptos_tall/service/ProjectService.java

@ -127,7 +127,8 @@ public class ProjectService implements IProjectService {
//生成token
Map<String, Object> theMap = CollectionUtil.newHashMap();
theMap.put("authId", String.valueOf(sysAuth.getId()));
UserVo.TokenBean tokenBean = userService.generateToken(sysAuth.getUserId(), theMap);
UserVo.TokenBean tokenBean = userService.generateToken(sysAuth.getUserId(), sysAuth.getId());
//TODO
//查找所有在线的业务
//遍历业务
//查询用户在业务内的项目信息(带token过去)

113
ptos_tall/src/main/java/com/ccsens/ptos_tall/service/UserService.java

@ -19,12 +19,14 @@ import com.ccsens.util.bean.wx.po.WxOauth2UserInfo;
import com.ccsens.util.exception.BaseException;
import com.ccsens.util.wx.WxGzhUtil;
import io.jsonwebtoken.Claims;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.lang.annotation.Annotation;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
@ -98,9 +100,7 @@ public class UserService implements IUserService {
saveSigninLog(userSign.getUserId(), userSign.getAuthId(),deviceId,params.getClient().byteValue(),clientIp);
//生成token
Map<String, Object> theMap = CollectionUtil.newHashMap();
theMap.put("authId", String.valueOf(userSign.getAuthId()));
UserVo.TokenBean tokenBean = generateToken(userSign.getUserId(), theMap);
UserVo.TokenBean tokenBean = generateToken(userSign.getUserId(), userSign.getAuthId());
tokenBean.setId(userSign.getUserId());
if(ObjectUtil.isNull(phone)){
@ -114,20 +114,23 @@ public class UserService implements IUserService {
* 获取token
*/
@Override
public UserVo.TokenBean generateToken(Object subject, Map<String, Object> payLoads) {
public UserVo.TokenBean generateToken(Long userId, Object authId) {
Map<String, Object> payLoads = CollectionUtil.newHashMap();
payLoads.put(WebConstant.PARAMETER_KEY_TOKEN_AUTH_ID, String.valueOf(authId));
UserVo.TokenBean tokenBean = new UserVo.TokenBean();
//生成过期时间
long tokenExpired = 3600 * 1000L * 2;
long refreshTokenExpired = 3600 * 1000L * 24 * 30;
//1.生成token并缓存
String token = JwtUtil.createJWT(subject + "",payLoads, tokenExpired,WebConstant.JWT_ACCESS_TOKEN_SECERT);
redisUtil.set(RedisKeyManager.getTokenCachedKey(subject), token, tokenExpired / 1000);
String token = JwtUtil.createJWT(userId + "",payLoads, tokenExpired,WebConstant.JWT_ACCESS_TOKEN_SECERT);
redisUtil.set(RedisKeyManager.getTokenCachedKey(userId), token, tokenExpired / 1000);
tokenBean.setToken(token);
//生成refreshToken
String refreshToken = JwtUtil.createJWT(subject + "", payLoads, refreshTokenExpired, WebConstant.JWT_ACCESS_TOKEN_SECERT);
redisUtil.set(RedisKeyManager.getRefreshTokenCachedKey(subject), refreshToken, refreshTokenExpired / 1000);
String refreshToken = JwtUtil.createJWT(userId + "", payLoads, refreshTokenExpired, WebConstant.JWT_ACCESS_TOKEN_SECERT);
redisUtil.set(RedisKeyManager.getRefreshTokenCachedKey(userId), refreshToken, refreshTokenExpired / 1000);
tokenBean.setRefreshToken(refreshToken);
//2.返回
@ -397,14 +400,16 @@ public class UserService implements IUserService {
log.info("用户存根不存在:{}",claims.getSubject());
throw new BaseException(CodeEnum.NOT_LOGIN);
}
userInfo.setId(Long.valueOf(claims.getSubject()));
//获取用户信息
SysUser sysUser = sysUserDao.selectByPrimaryKey(Long.valueOf(claims.getSubject()));
if(ObjectUtil.isNotNull(sysUser)){
userInfo.setAvatarUrl(sysUser.getAvatarUrl());
userInfo.setUserName(sysUser.getName());
userInfo.setAuthType(sysUser.getAuthType());
if(ObjectUtil.isNull(sysUser)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
userInfo.setId(sysUser.getId());
//获取用户信息
userInfo.setAvatarUrl(sysUser.getAvatarUrl());
userInfo.setUserName(sysUser.getName());
userInfo.setAuthType(sysUser.getAuthType());
//查找手机号
userInfo.setPhone(sysAuthDao.getPhoneByUserId(Long.valueOf(claims.getSubject())));
@ -421,33 +426,67 @@ public class UserService implements IUserService {
if(StrUtil.isBlank(params.getDeviceId())){
throw new BaseException(PtOsCodeError.ILLEGAL_LOG_IN);
}
//查找deviceId关联的临时用户
SysUser sysUser = sysUserDao.getVisitorUser(params.getDeviceId());
if(ObjectUtil.isNotNull(sysUser)){
userInfo.setId(sysUser.getId());
userInfo.setAvatarUrl(sysUser.getAvatarUrl());
userInfo.setUserName(sysUser.getName());
}else {
//以前没有关联用户则新建一个
sysUser = new SysUser();
sysUser.setId(snowflake.nextId());
sysUser.setDeviceId(params.getDeviceId());
sysUser.setAuthType((byte) 0);
sysUserDao.insertSelective(sysUser);
userInfo.setId(sysUser.getId());
synchronized (this) {
//查找deviceId关联的临时用户
SysUser sysUser = sysUserDao.getVisitorUser(params.getDeviceId());
log.info("查找deviceId用户:{}" ,sysUser);
if(ObjectUtil.isNotNull(sysUser)){
userInfo.setId(sysUser.getId());
userInfo.setAvatarUrl(sysUser.getAvatarUrl());
userInfo.setUserName(sysUser.getName());
}else {
//以前没有关联用户则新建一个
sysUser = new SysUser();
sysUser.setId(snowflake.nextId());
sysUser.setDeviceId(params.getDeviceId());
sysUser.setAuthType((byte) 0);
sysUserDao.insertSelective(sysUser);
userInfo.setId(sysUser.getId());
}
userInfo.setAuthType(sysUser.getAuthType());
//添加登录记录
saveSigninLog(sysUser.getId(), 0L,params.getDeviceId(), params.getClientType(),params.getClientIp());
//重新生成token
UserVo.TokenBean tokenBean = generateToken(sysUser.getId(), 0L);
userInfo.setToken(tokenBean.getToken());
userInfo.setRefreshToken(tokenBean.getRefreshToken());
}
userInfo.setAuthType(sysUser.getAuthType());
//添加登录记录
saveSigninLog(sysUser.getId(), 0L,params.getDeviceId(), params.getClientType(),params.getClientIp());
//重新生成token
Map<String, Object> theMap = CollectionUtil.newHashMap();
theMap.put("authId", String.valueOf(0L));
UserVo.TokenBean tokenBean = generateToken(sysUser.getId(), theMap);
userInfo.setToken(tokenBean.getToken());
userInfo.setRefreshToken(tokenBean.getRefreshToken());
return userInfo;
}
@Override
public String getTokenByRefreshToken(String refreshToken) {
Claims claims;
try {
claims = JwtUtil.parseJWT(refreshToken, WebConstant.JWT_ACCESS_TOKEN_SECERT);
}catch(Exception e){
log.info("token无效");
throw new BaseException(PtOsCodeError.NOT_REFRESH_TOKEN);
}
//获取userId和authId
String subject = claims.getSubject();
Object authId = claims.get(WebConstant.PARAMETER_KEY_TOKEN_AUTH_ID);
//验证用户存根
if(!redisUtil.hasKey(RedisKeyManager.getRefreshTokenCachedKey(Long.valueOf(subject)))){
log.info("用户存根不存在:{}",claims.getSubject());
throw new BaseException(PtOsCodeError.NOT_REFRESH_TOKEN);
}
//检查用户是否存在
SysUser sysUser = sysUserDao.selectByPrimaryKey(Long.valueOf(claims.getSubject()));
if(ObjectUtil.isNull(sysUser)){
throw new BaseException(PtOsCodeError.NOT_REFRESH_TOKEN);
}
//重新生成token
Map<String, Object> payLoads = CollectionUtil.newHashMap();
payLoads.put(WebConstant.PARAMETER_KEY_TOKEN_AUTH_ID, String.valueOf(authId));
//生成过期时间
long tokenExpired = 3600 * 1000L * 2;
//生成token并缓存
String token = JwtUtil.createJWT(subject + "",payLoads, tokenExpired,WebConstant.JWT_ACCESS_TOKEN_SECERT);
redisUtil.set(RedisKeyManager.getTokenCachedKey(subject), token, tokenExpired / 1000);
return token;
}
@Override
public UserVo.BusinessUserInfo userByBusinessToken(UserDto.BusinessToken params) {
//验证业务的appId和secret

3
ptos_tall/src/main/java/com/ccsens/ptos_tall/util/PtOsCodeError.java

@ -7,7 +7,8 @@ import com.ccsens.util.CodeError;
*/
public class PtOsCodeError extends CodeError {
public static final Code ILLEGAL_LOG_IN = new Code(401,"非法登录",true);
public static final Code ILLEGAL_LOG_IN = new Code(400,"非法登录",true);
public static final Code NOT_REFRESH_TOKEN = new Code(401,"refreshToken过期,请重新登录",true);
public static final Code CLIENT_ERROR = new Code(501,"客户端类型异常",true);
public static final Code SIGNIN_TYPE_ERROR = new Code(502,"登录类型异常",true);
public static final Code NOT_PHONE = new Code(503,"手机号不能为空",true);

1
ptos_tall/src/main/resources/mapper_dao/SysUserDao.xml

@ -11,5 +11,6 @@
device_id = #{deviceId}
and auth_type = 0
and rec_status = 0
limit 1
</select>
</mapper>

33
test_controller/.gitignore

@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

331
test_controller/mvnw

@ -0,0 +1,331 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ]; then
if [ -f /usr/local/etc/mavenrc ]; then
. /usr/local/etc/mavenrc
fi
if [ -f /etc/mavenrc ]; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ]; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false
darwin=false
mingw=false
case "$(uname)" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true ;;
Darwin*)
darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="$(/usr/libexec/java_home)"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ]; then
if [ -r /etc/gentoo-release ]; then
JAVA_HOME=$(java-config --jre-home)
fi
fi
if [ -z "$M2_HOME" ]; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ]; do
ls=$(ls -ld "$PRG")
link=$(expr "$ls" : '.*-> \(.*\)$')
if expr "$link" : '/.*' >/dev/null; then
PRG="$link"
else
PRG="$(dirname "$PRG")/$link"
fi
done
saveddir=$(pwd)
M2_HOME=$(dirname "$PRG")/..
# make it fully qualified
M2_HOME=$(cd "$M2_HOME" && pwd)
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=$(cygpath --unix "$M2_HOME")
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
[ -n "$CLASSPATH" ] &&
CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw; then
[ -n "$M2_HOME" ] &&
M2_HOME="$( (
cd "$M2_HOME"
pwd
))"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="$( (
cd "$JAVA_HOME"
pwd
))"
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="$(which javac)"
if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=$(which readlink)
if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then
if $darwin; then
javaHome="$(dirname \"$javaExecutable\")"
javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac"
else
javaExecutable="$(readlink -f \"$javaExecutable\")"
fi
javaHome="$(dirname \"$javaExecutable\")"
javaHome=$(expr "$javaHome" : '\(.*\)/bin')
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ]; then
if [ -n "$JAVA_HOME" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="$(
\unset -f command
\command -v java
)"
fi
fi
if [ ! -x "$JAVACMD" ]; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ]; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]; then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ]; do
if [ -d "$wdir"/.mvn ]; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=$(
cd "$wdir/.."
pwd
)
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' <"$1")"
fi
}
BASE_DIR=$(find_maven_basedir "$(pwd)")
if [ -z "$BASE_DIR" ]; then
exit 1
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
if [ -n "$MVNW_REPOURL" ]; then
jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
else
jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
fi
while IFS="=" read key value; do
case "$key" in wrapperUrl)
jarUrl="$value"
break
;;
esac
done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
if [ "$MVNW_VERBOSE" = true ]; then
echo "Downloading from: $jarUrl"
fi
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
if $cygwin; then
wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
fi
if command -v wget >/dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found wget ... using wget"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
else
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
fi
elif command -v curl >/dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found curl ... using curl"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
curl -o "$wrapperJarPath" "$jarUrl" -f
else
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Falling back to using Java to download"
fi
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
# For Cygwin, switch paths to Windows format before running javac
if $cygwin; then
javaClass=$(cygpath --path --windows "$javaClass")
fi
if [ -e "$javaClass" ]; then
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
("$JAVA_HOME/bin/javac" "$javaClass")
fi
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
# Running the downloader
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Running MavenWrapperDownloader.java ..."
fi
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=$(cygpath --path --windows "$M2_HOME")
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
[ -n "$CLASSPATH" ] &&
CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
$MAVEN_DEBUG_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" \
"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

188
test_controller/mvnw.cmd

@ -0,0 +1,188 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% ^
%JVM_CONFIG_MAVEN_PROPS% ^
%MAVEN_OPTS% ^
%MAVEN_DEBUG_OPTS% ^
-classpath %WRAPPER_JAR% ^
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
%WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%"=="on" pause
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
cmd /C exit /B %ERROR_CODE%

83
test_controller/pom.xml

@ -0,0 +1,83 @@
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>ccsens_ptos</artifactId>
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>test_controller</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test_controller</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--cloud 工具类-->
<dependency>
<artifactId>cloudutil</artifactId>
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.ccsens</groupId>
<artifactId>util</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!--微信工具包-->
<dependency>
<artifactId>wechatutil</artifactId>
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/mbg.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.ccsens.test_controller.TestControllerApplication</mainClass>
<!--<skip>true</skip>-->
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

13
test_controller/src/main/java/com/ccsens/test_controller/TestControllerApplication.java

@ -0,0 +1,13 @@
package com.ccsens.test_controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestControllerApplication {
public static void main(String[] args) {
SpringApplication.run(TestControllerApplication.class, args);
}
}

25
test_controller/src/main/java/com/ccsens/test_controller/api/CcsensTestController.java

@ -0,0 +1,25 @@
package com.ccsens.test_controller.api;
import com.ccsens.util.JsonResponse;
import io.swagger.annotations.ApiParam;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @author
*/
@RestController
@RequestMapping("/business")
public interface CcsensTestController {
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
JsonResponse queryBusiness(@ApiParam @Validated @RequestBody String params);
}

1
test_controller/src/main/resources/application.properties

@ -0,0 +1 @@

13
test_controller/src/test/java/com/ccsens/test_controller/TestControllerApplicationTests.java

@ -0,0 +1,13 @@
package com.ccsens.test_controller;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class TestControllerApplicationTests {
@Test
void contextLoads() {
}
}

1
util/src/main/java/com/ccsens/util/WebConstant.java

@ -189,6 +189,7 @@ public class WebConstant {
public static final String JWT_REFRESH_TOKEN_SECRET = Base64.encode("GPYTu,tHA\"|/~");
public static final String PARAMETER_KEY_TOKEN = "token";
public static final String PARAMETER_KEY_TOKEN_AUTH_ID = "authId";
public static final String HEADER_KEY_TOKEN = "Authorization";
public static final String HEADER_KEY_MD5 = "md5";
public static final String HEADER_KEY_TOKEN_PREFIX = "Bearer ";

Loading…
Cancel
Save