Commit 9204c4c4 by xunj

sha1加密

1 parent 391b0ec2
Showing 31 changed files with 657 additions and 344 deletions
...@@ -2,6 +2,6 @@ FROM java:8 ...@@ -2,6 +2,6 @@ FROM java:8
EXPOSE 10301 EXPOSE 10301
VOLUME /tmp VOLUME /tmp
ADD ./target/outbound-admin-0.0.1-SNAPSHOT.jar /app.jar ADD ./target/activity-admin-0.0.1-SNAPSHOT.jar /app.jar
RUN bash -c 'touch /app.jar' RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"] ENTRYPOINT ["java","-jar","/app.jar"]
...@@ -101,26 +101,6 @@ ...@@ -101,26 +101,6 @@
<artifactId>spring-boot-starter-validation</artifactId> <artifactId>spring-boot-starter-validation</artifactId>
</dependency> </dependency>
<dependency>
<groupId>axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis-jaxrpc -->
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-jaxrpc</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
...@@ -133,7 +113,7 @@ ...@@ -133,7 +113,7 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<configuration> <configuration>
<mainClass>com.moxi.outbound.AdminApplication</mainClass> <mainClass>com.polysoft.activity.AdminApplication</mainClass>
<includeSystemScope>true</includeSystemScope> <includeSystemScope>true</includeSystemScope>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments> <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
</configuration> </configuration>
......
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.polysoft.activity.config; package com.polysoft.activity.config;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
...@@ -19,35 +9,28 @@ import springfox.documentation.spi.DocumentationType; ...@@ -19,35 +9,28 @@ import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
/** /**
* Swagger配置 * Created by zengwenjia on 18/3/21.
*
* @author moxi moxi@xi-ai.com
*/ */
@Configuration @Configuration
@EnableSwagger2 @EnableSwagger2
public class SwaggerConfig{ public class SwaggerConfig {
@Bean @Bean
public Docket createRestApi() { public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2) return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.apiInfo(apiInfo())
.select() .select()
//加了ApiOperation注解的类,生成接口文档 .apis(RequestHandlerSelectors.basePackage("com.polysoft.activity.controller"))
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
//包下的类,生成接口文档
//.apis(RequestHandlerSelectors.basePackage("com.moxi.outbound.enity.job.controller"))
.paths(PathSelectors.any()) .paths(PathSelectors.any())
.build(); .build();
} }
private ApiInfo apiInfo() { public ApiInfo apiInfo() {
return new ApiInfoBuilder() return new ApiInfoBuilder().title("宝利")
.title("宝利") .description("宝利")
.description("宝利春节活动") .version("1.0")
.termsOfServiceUrl("https://www.xi-ai.com")
.version("1.0.0")
.build(); .build();
} }
} }
\ No newline at end of file \ No newline at end of file
package com.polysoft.activity.config.exception; package com.polysoft.activity.config.exception;
import com.polysoft.activity.common.exception.RRException; import com.polysoft.activity.common.exception.RRException;
import com.polysoft.activity.utils.R; import com.polysoft.activity.utils.ApiResult;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.dao.DuplicateKeyException; import org.springframework.dao.DuplicateKeyException;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.bind.annotation.RestControllerAdvice;
/** /**
...@@ -21,8 +24,8 @@ public class RRExceptionHandler { ...@@ -21,8 +24,8 @@ public class RRExceptionHandler {
* 处理自定义异常 * 处理自定义异常
*/ */
@ExceptionHandler(RRException.class) @ExceptionHandler(RRException.class)
public R handleRRException(RRException e){ public ApiResult handleRRException(RRException e){
R r = new R(); ApiResult r = new ApiResult();
r.put("code", e.getCode()); r.put("code", e.getCode());
r.put("msg", e.getMessage()); r.put("msg", e.getMessage());
...@@ -30,15 +33,33 @@ public class RRExceptionHandler { ...@@ -30,15 +33,33 @@ public class RRExceptionHandler {
} }
@ExceptionHandler(DuplicateKeyException.class) @ExceptionHandler(DuplicateKeyException.class)
public R handleDuplicateKeyException(DuplicateKeyException e){ public ApiResult handleDuplicateKeyException(DuplicateKeyException e){
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
return R.error("数据库中已存在该记录"); return ApiResult.error("数据库中已存在该记录");
} }
@ExceptionHandler(Exception.class) @ExceptionHandler(Exception.class)
public R handleException(Exception e){ public ApiResult handleException(Exception e){
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
return R.error(e); return ApiResult.error(e);
}
/**
* 参数校验统一处理
* @param e
* @return
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public ApiResult handlerValidException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
String msg = "参数不能为空!";
System.out.println(bindingResult.getFieldError());
if (bindingResult.getFieldError() != null ){
msg = bindingResult.getFieldError().getDefaultMessage();
}
logger.info("<统一异常处理>请求参数验证失败:{}", msg);
return ApiResult.error(500,msg);
} }
} }
package com.polysoft.activity.controller;
import com.polysoft.activity.service.CaseTagService;
import com.polysoft.activity.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/case")
public class CaseController {
@Autowired
private CaseTagService caseTagService;
@GetMapping("/addOrUpdate" )
@ResponseBody
public R addOrUpdateCase(String c) {
String ss = caseTagService.getSms();
return R.data(ss);
}
}
package com.polysoft.activity.controller;
import com.polysoft.activity.model.param.UserInfoParam;
import com.polysoft.activity.service.UserInfoService;
import com.polysoft.activity.utils.ApiResult;
import io.swagger.annotations.Api;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("/user")
@Api(value = "用户", description = "用户接口")
public class UserController {
@Resource
private UserInfoService userInfoService;
@PostMapping("/queryAuthUser" )
@ResponseBody
public ApiResult queryAuthUser(@RequestBody @Validated UserInfoParam param) {
return userInfoService.queryAuthUser(param.getPhone());
}
}
package com.polysoft.activity.controller;
import com.polysoft.activity.model.param.AddWishParam;
import com.polysoft.activity.service.UserInfoService;
import com.polysoft.activity.service.WishService;
import com.polysoft.activity.utils.ApiResult;
import io.swagger.annotations.Api;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("/wish")
@Api(value = "心愿", description = "心愿接口")
public class WishController {
@Resource
private WishService wishService;
@PostMapping("/addWish" )
@ResponseBody
public ApiResult addWish(@RequestBody @Validated AddWishParam param) {
return wishService.addWish(param);
}
}
package com.polysoft.activity.entity;
import java.io.Serializable;
import java.util.Date;
public class CallResultEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
//案件id
private Integer callCaseId;
//被叫人姓名
private String name;
//当前拨打伦次
private Integer rebotTime;
//案件金额
private String casePrice;
//借款应还日期
private Date returnTime;
//逾期天数
private Integer overdueDays;
//去电时间
private Date callStartTime;
//结束时间
private Date callEndTime;
//session
private String dmSessionId;
//workspace
private Integer dmWorkspaceId;
//流程id
private String intentId;
//进入意图文本
private String intentText;
//外呼号码
private String callNumber;
//分机号
private String extNumber;
//公司id
private Integer companyId;
//用户id
private Integer userId;
//拨打状态
private String callStatus;
//记录类型
private String type;
private String resultId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getCallCaseId() {
return callCaseId;
}
public void setCallCaseId(Integer callCaseId) {
this.callCaseId = callCaseId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getRebotTime() {
return rebotTime;
}
public void setRebotTime(Integer rebotTime) {
this.rebotTime = rebotTime;
}
public String getCasePrice() {
return casePrice;
}
public void setCasePrice(String casePrice) {
this.casePrice = casePrice;
}
public Date getReturnTime() {
return returnTime;
}
public void setReturnTime(Date returnTime) {
this.returnTime = returnTime;
}
public Integer getOverdueDays() {
return overdueDays;
}
public void setOverdueDays(Integer overdueDays) {
this.overdueDays = overdueDays;
}
public Date getCallStartTime() {
return callStartTime;
}
public void setCallStartTime(Date callStartTime) {
this.callStartTime = callStartTime;
}
public Date getCallEndTime() {
return callEndTime;
}
public void setCallEndTime(Date callEndTime) {
this.callEndTime = callEndTime;
}
public String getDmSessionId() {
return dmSessionId;
}
public void setDmSessionId(String dmSessionId) {
this.dmSessionId = dmSessionId;
}
public Integer getDmWorkspaceId() {
return dmWorkspaceId;
}
public void setDmWorkspaceId(Integer dmWorkspaceId) {
this.dmWorkspaceId = dmWorkspaceId;
}
public String getIntentId() {
return intentId;
}
public void setIntentId(String intentId) {
this.intentId = intentId;
}
public String getIntentText() {
return intentText;
}
public void setIntentText(String intentText) {
this.intentText = intentText;
}
public String getCallNumber() {
return callNumber;
}
public void setCallNumber(String callNumber) {
this.callNumber = callNumber;
}
public String getExtNumber() {
return extNumber;
}
public void setExtNumber(String extNumber) {
this.extNumber = extNumber;
}
public Integer getCompanyId() {
return companyId;
}
public void setCompanyId(Integer companyId) {
this.companyId = companyId;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getCallStatus() {
return callStatus;
}
public void setCallStatus(String callStatus) {
this.callStatus = callStatus;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getResultId() {
return resultId;
}
public void setResultId(String resultId) {
this.resultId = resultId;
}
}
package com.polysoft.activity.mapper;
import com.polysoft.activity.model.vo.UserInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface UserInfoMapper {
UserInfoVO queryAuthUser(@Param("phone") String phone);
}
package com.polysoft.activity.mapper; package com.polysoft.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.polysoft.activity.model.dto.AddWishDto;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface CaseMapper { public interface WishMapper extends BaseMapper<AddWishDto> {
String getSms();
} }
package com.polysoft.activity.model.dto;
import cn.hutool.core.date.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* @author lvyp
* @date 2021/1/26
*/
@Data
public class AddWishDto {
private Long wishId;
@ApiModelProperty("用户主键")
@NotBlank(message = "用户主键不能为空")
private Long userId ;
@ApiModelProperty("姓名")
@NotBlank(message = "姓名不能为空")
private String userName ;
@ApiModelProperty("城市地址")
@NotBlank(message = "城市地址不能为空")
private String address ;
@ApiModelProperty("心愿语录内容")
@NotBlank(message = "心愿语录内容不能为空")
private String wishContext ;
@ApiModelProperty("用户主键")
private int prizeFalg =0;
@ApiModelProperty("创建日期")
private String createTime ;
@ApiModelProperty("发布日期 示例:2020-01-21")
private String pushDate ;
@ApiModelProperty("0 未删除 1 已删除")
private int deleteFalg =0 ;
public void setCreateTime(Date date) {
this.createTime = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
}
public void setPushDate(Date date) {
this.pushDate = DateUtil.format(new Date(),"yyyy-MM-dd");;
}
}
package com.polysoft.activity.model.param;
import cn.hutool.core.date.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* @author lvyp
* @date 2021/1/26
*/
@Data
public class AddWishParam {
private Long wishId;
@ApiModelProperty("用户主键")
@NotBlank(message = "用户主键不能为空")
private Long userId ;
@ApiModelProperty("姓名")
@NotBlank(message = "姓名不能为空")
private String userName ;
@ApiModelProperty("城市地址")
@NotBlank(message = "城市地址不能为空")
private String address ;
@ApiModelProperty("心愿语录内容")
@NotBlank(message = "心愿语录内容不能为空")
private String wishContext ;
@ApiModelProperty("0 未中奖 1 中奖")
private int prizeFalg =0;
}
package com.polysoft.activity.model.param;
import com.polysoft.activity.common.utils.PageQuery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ApiModel("用户信息类")
@Data
public class UserInfoParam extends PageQuery {
private static final long serialVersionUID = 1L;
@ApiModelProperty("手机号")
@NotBlank(message = "手机号不能为空")
private String phone;
}
package com.polysoft.activity.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel("用户信息类")
@Data
public class UserInfoVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("用户主键")
private Long userId;
@ApiModelProperty("用户名")
private String userName;
@ApiModelProperty("用户名")
private String phone;
@ApiModelProperty("用户名")
private double redBalance;
}
package com.polysoft.activity.service;
public interface CaseTagService {
String getSms();
}
package com.polysoft.activity.service;
import com.polysoft.activity.utils.ApiResult;
public interface UserInfoService {
ApiResult queryAuthUser(String phone);
}
package com.polysoft.activity.service;
import com.polysoft.activity.model.dto.AddWishDto;
import com.polysoft.activity.model.param.AddWishParam;
import com.polysoft.activity.utils.ApiResult;
public interface WishService {
ApiResult addWish(AddWishParam param);
}
package com.polysoft.activity.service.impl;
import com.polysoft.activity.mapper.CaseMapper;
import com.polysoft.activity.service.CaseTagService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class CaseTagServiceImpl implements CaseTagService {
@Autowired
private CaseMapper mapper;
@Override
public String getSms() {
return mapper.getSms();
}
}
package com.polysoft.activity.service.impl;
import com.polysoft.activity.mapper.UserInfoMapper;
import com.polysoft.activity.model.vo.UserInfoVO;
import com.polysoft.activity.service.UserInfoService;
import com.polysoft.activity.utils.ApiResult;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UserInfoServiceImpl implements UserInfoService {
@Resource
private UserInfoMapper mapper;
@Override
public ApiResult queryAuthUser(String phone) {
UserInfoVO user = mapper.queryAuthUser(phone);
if(user == null){
return ApiResult.error(500,"【很抱歉,您非宝利成员无法领取红包】");
}
return ApiResult.ok(user);
}
}
package com.polysoft.activity.service.impl;
import com.polysoft.activity.common.utils.BeanTransferUtils;
import com.polysoft.activity.mapper.WishMapper;
import com.polysoft.activity.model.dto.AddWishDto;
import com.polysoft.activity.model.param.AddWishParam;
import com.polysoft.activity.service.WishService;
import com.polysoft.activity.utils.ApiResult;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
@Service
public class WishServiceImpl implements WishService {
@Resource
private WishMapper mapper;
@Override
public ApiResult addWish(AddWishParam param) {
AddWishDto dto = BeanTransferUtils.transfer(param,AddWishDto.class);
dto.setCreateTime(new Date());
dto.setPushDate(new Date());
int i = mapper.insert(dto);
try {
if(i > 0){
return ApiResult.ok("心愿发布成功");
}else {
return ApiResult.error("心愿发布失败");
}
} catch (Exception e) {
e.printStackTrace();
return ApiResult.error();
}
}
}
...@@ -3,16 +3,17 @@ server: ...@@ -3,16 +3,17 @@ server:
session: session:
cookie: cookie:
http-only: false http-only: false
context-path: /api
tomcat: tomcat:
uri-encoding: UTF-8 uri-encoding: UTF-8
max-threads: 1000 max-threads: 1000
min-spare-threads: 30 min-spare-threads: 30
port: 10301 port: 21000
spring: spring:
datasource: datasource:
druid: druid:
password: Moxi123# password: Moxi123#
url: jdbc:mysql://114.112.96.30:30029/voice_quality_feichexian?useUnicode=true&characterEncoding=UTF8&useSSL=false url: jdbc:mysql://114.112.96.30:30029/spring_activity?useUnicode=true&characterEncoding=UTF8&useSSL=false
username: root username: root
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
...@@ -28,7 +29,7 @@ spring: ...@@ -28,7 +29,7 @@ spring:
mybatis-plus: mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml mapper-locations: classpath:/mapper/**/*.xml
#实体扫描,多个package用逗号或者分号分隔 #实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.moxi.outbound.enity.*.entity typeAliasesPackage: com.polysoft.activity.*.vo
global-config: global-config:
#数据库相关配置 #数据库相关配置
db-config: db-config:
......
...@@ -175,15 +175,15 @@ ...@@ -175,15 +175,15 @@
<!--开发环境:打印控制台--> <!--开发环境:打印控制台-->
<springProfile name="dev"> <springProfile name="dev">
<logger name="com.moxi" level="debug"> <logger name="com.polysoft" level="debug">
</logger> </logger>
</springProfile> </springProfile>
<springProfile name="prod"> <springProfile name="prod">
<logger name="com.moxi" level="debug"> <logger name="com.polysoft" level="debug">
</logger> </logger>
</springProfile> </springProfile>
<springProfile name="dev"> <springProfile name="dev">
<logger name="com.moxi" level="debug"> <logger name="com.polysoft" level="debug">
</logger> </logger>
</springProfile> </springProfile>
<root level="debug"> <root level="debug">
......
<?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.polysoft.activity.mapper.CaseMapper">
<select id="getSms" resultType="java.lang.String">
select seat_code from t_seat_info limit 1
</select>
</mapper>
<?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.polysoft.activity.mapper.UserInfoMapper">
<select id="queryAuthUser" resultType="com.polysoft.activity.model.vo.UserInfoVO">
select
user_id ,
user_name,
red_balance,
phone
from
t_user where phone=#{phone}
</select>
</mapper>
<?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.polysoft.activity.mapper.WishMapper">
<!--<insert id="addWish" parameterType="com.polysoft.activity.model.dto.AddWishDto">
insert into t_wish (
wish_id,
user_id,
user_name,
address,
wish_context,
prize_falg,
create_time,
push_date,
delete_falg
)VALUES (
#{wishId},
#{wishId},
#{wishId},
#{wishId},
#{wishId},
#{wishId},
#{wishId},
#{wishId},
)
</insert>-->
</mapper>
package com.polysoft.activity.datasource.config;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import javax.annotation.PostConstruct;
import java.util.TimeZone;
@JsonComponent
public class JsonSerializerConfig {
@Bean
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
SimpleModule module = new SimpleModule();
module.addSerializer(Long.class, ToStringSerializer.instance);
module.addSerializer(Long.TYPE, ToStringSerializer.instance);
objectMapper.registerModule(module);
return objectMapper;
}
@PostConstruct
public void loadTimeZone() {
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
}
}
...@@ -16,55 +16,60 @@ import java.util.Map; ...@@ -16,55 +16,60 @@ import java.util.Map;
* *
* @author moxi moxi@xi-ai.com * @author moxi moxi@xi-ai.com
*/ */
public class R extends HashMap<String, Object> { public class ApiResult extends HashMap<String, Object> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public R() { public ApiResult() {
put("code", 200); put("code", 200);
put("msg", "success"); put("msg", "success");
} }
public static R error(Exception e) { public static ApiResult error(Exception e) {
return error(500,e.getMessage()); return error(500,e.getMessage());
} }
public static R error() { public static ApiResult error() {
return error(500, "未知异常,请联系管理员"); return error(500, "未知异常,请联系管理员");
} }
public static R error(String msg) { public static ApiResult error(String msg) {
return error(500, msg); return error(500, msg);
} }
public static R error(int code, String msg) { public static ApiResult error(int code, String msg) {
R r = new R(); ApiResult r = new ApiResult();
r.put("code", code); r.put("code", code);
r.put("msg", msg); r.put("msg", msg);
return r; return r;
} }
public static R ok(String msg) { public static ApiResult ok(String msg) {
R r = new R(); ApiResult r = new ApiResult();
r.put("msg", msg); r.put("msg", msg);
return r; return r;
} }
public static R ok(Map<String, Object> map) { public static ApiResult ok(Map<String, Object> map) {
R r = new R(); ApiResult r = new ApiResult();
r.putAll(map); r.putAll(map);
return r; return r;
} }
public static R data(Object data) { public static ApiResult data(Object data) {
R r = R.ok(); ApiResult r = ApiResult.ok();
r.put("data", data);
return r;
}
public static ApiResult ok(Object data) {
ApiResult r = ApiResult.ok();
r.put("data", data); r.put("data", data);
return r; return r;
} }
public static R ok() { public static ApiResult ok() {
return new R(); return new ApiResult();
} }
@Override @Override
public R put(String key, Object value) { public ApiResult put(String key, Object value) {
super.put(key, value); super.put(key, value);
return this; return this;
} }
......
package com.polysoft.activity.utils;
import cn.hutool.core.util.IdUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/**
* @Description: 上传工具类
* @Author: 吕远征
* @CreateDate: 2020/8/12 15:27
* @Email: 344302421@qq.com
* @Version: v1.0.1
*/
@Slf4j
@Component
public class FileUtils {
private static String uploadpath;
public static ApiResult upload(MultipartFile file, String fileType, Long wishId) {
if (file.isEmpty()) {
return ApiResult.error();
}
String fileName = file.getOriginalFilename();
String uuid = IdUtil.simpleUUID();
String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
File dest = null;
try {
String path=uploadpath+fileType+File.separator+date+File.separator+uuid+fileName;
dest = new File(path);
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
file.transferTo(dest);
log.info("上传成功");
return ApiResult.ok();
}catch (Exception e){
e.printStackTrace();
return ApiResult.error();
}
}
public static void main(String[] args) {
//1:获取access_token
//请求地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
//2:通过access_token 获取车票
//请求地址:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
//3:拿着车票上车,请求分享接口
String appId="wx747674121d6fd50a";
String jsapi_ticket = "41_B_mOhQbJYcSwKo3RyjXmsmKGHHlaav-8QasIYhl1KkX-tZYQd6cBbXP10xf-3hfBzZSXbLQPN7Pc9ug_TPRYexLsEK9Md_A4rHYSXg-JyqegcuiyL5w5oyG-ylOschhT0Ij6jE8mA6F4w-q7GLDcCBAOTL";
String noncestr = UUID.randomUUID().toString().replaceAll("-","");
Long timestamp = System.currentTimeMillis()/1000;
String signStr = "jsapi_ticket"+jsapi_ticket+"&noncestr"+noncestr+"&timestamp"+timestamp;
//Sha1加密,生成签名
String sign = SHA1.encode(signStr);
System.out.println(sign);
}
}
package com.polysoft.activity.utils;
import java.security.MessageDigest;
/**
* @author lvyp
* @date 2021/1/26
*/
public class SHA1 {
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static String getFormattedText(byte[] bytes) {
int len = bytes.length;
StringBuilder buf = new StringBuilder(len * 2);
// 把密文转换成十六进制的字符串形式
for (int j = 0; j < len; j++) {
buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
}
return buf.toString();
}
public static String encode(String str) {
if (str == null) {
return null;
}
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
messageDigest.update(str.getBytes());
return getFormattedText(messageDigest.digest());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
package com.polysoft.activity.utils;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
/**
* @description: 雪花算法
* @author: DINGZIYAO
* @date: 2020/9/14 13:59
* @version: v1.0
*/
public class SnowFlakeUtil {
private final static long TWEPOCH = 12888349746579L;
// 机器标识位数
private final static long WORKER_ID_BITS = 5L;
// 数据中心标识位数
private final static long DATACENTER_ID_BITS = 5L;
// 毫秒内自增位数
private final static long SEQUENCE_BITS = 12L;
// 机器ID偏左移12位
private final static long WORKER_ID_SHIFT = SEQUENCE_BITS;
// 数据中心ID左移17位
private final static long DATACENTER_ID_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS;
// 时间毫秒左移22位
private final static long TIMESTAMP_LEFT_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS + DATACENTER_ID_BITS;
//sequence掩码,确保sequnce不会超出上限
private final static long SEQUENCE_MASK = ~(-1L << SEQUENCE_BITS);
//上次时间戳
private static long lastTimestamp = -1L;
//序列
private long sequence = 0L;
//服务器ID
private long workerId = 1L;
private static final long WORKER_MASK = ~(-1L << WORKER_ID_BITS);
//进程编码
private long processId = 1L;
private static final long PROCESS_MASK = ~(-1L << DATACENTER_ID_BITS);
private static SnowFlakeUtil snowFlake = null;
static{
snowFlake = new SnowFlakeUtil();
}
public static synchronized long nextId(){
return snowFlake.getNextId();
}
private SnowFlakeUtil() {
//获取机器编码
this.workerId=this.getMachineNum();
//获取进程编码
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
this.processId= Long.parseLong(runtimeMXBean.getName().split("@")[0]);
//避免编码超出最大值
this.workerId=workerId & WORKER_MASK;
this.processId=processId & PROCESS_MASK;
}
public synchronized long getNextId() {
//获取时间戳
long timestamp = timeGen();
//如果时间戳小于上次时间戳则报错
if (timestamp < lastTimestamp) {
try {
throw new Exception("Clock moved backwards. Refusing to generate id for " + (lastTimestamp - timestamp) + " milliseconds");
} catch (Exception e) {
e.printStackTrace();
}
}
//如果时间戳与上次时间戳相同
if (lastTimestamp == timestamp) {
// 当前毫秒内,则+1,与sequenceMask确保sequence不会超出上限
sequence = (sequence + 1) & SEQUENCE_MASK;
if (sequence == 0) {
// 当前毫秒内计数满了,则等待下一秒
timestamp = tilNextMillis(lastTimestamp);
}
} else {
sequence = 0;
}
lastTimestamp = timestamp;
// ID偏移组合生成最终的ID,并返回ID
long nextId = ((timestamp - TWEPOCH) << TIMESTAMP_LEFT_SHIFT) | (processId << DATACENTER_ID_SHIFT) | (workerId << WORKER_ID_SHIFT) | sequence;
return nextId;
}
/**
* 再次获取时间戳直到获取的时间戳与现有的不同
* @param lastTimestamp
* @return 下一个时间戳
*/
private long tilNextMillis(final long lastTimestamp) {
long timestamp = this.timeGen();
while (timestamp <= lastTimestamp) {
timestamp = this.timeGen();
}
return timestamp;
}
private long timeGen() {
return System.currentTimeMillis();
}
/**
* 获取机器编码
* @return
*/
private long getMachineNum(){
long machinePiece;
StringBuilder sb = new StringBuilder();
Enumeration<NetworkInterface> e = null;
try {
e = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e1) {
e1.printStackTrace();
}
while (e.hasMoreElements()) {
NetworkInterface ni = e.nextElement();
sb.append(ni.toString());
}
machinePiece = sb.toString().hashCode();
return machinePiece;
}
public static void main(String[] args) {
System.out.println(SnowFlakeUtil.nextId());
}
}
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</modules> </modules>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>outbound</name> <name>activity</name>
<description>Demo project for Spring Boot</description> <description>Demo project for Spring Boot</description>
<parent> <parent>
...@@ -136,6 +136,12 @@ ...@@ -136,6 +136,12 @@
<version>3.0.4</version> <version>3.0.4</version>
<type>pom</type> <type>pom</type>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!