Commit 9e0212e6 by xunj

心愿发布

1 parent 5bbfa686
......@@ -11,6 +11,7 @@ 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 org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
......@@ -24,7 +25,7 @@ public class WishController {
@PostMapping("/addWish" )
@ResponseBody
public ApiResult addWish(@RequestBody @Validated AddWishParam param) {
public ApiResult addWish(AddWishParam param) {
return wishService.addWish(param);
}
......
package com.polysoft.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.polysoft.activity.model.dto.WishPicDto;
import org.mapstruct.Mapper;
/**
* @author lvyp
* @date 2021/1/27
*/
@Mapper
public interface WishPicMapper extends BaseMapper<WishPicDto> {
}
package com.polysoft.activity.model.dto;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -12,21 +13,18 @@ import java.util.Date;
* @date 2021/1/26
*/
@Data
@TableName(value = "t_wish")
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("用户主键")
@ApiModelProperty("0 未中奖 1 中奖")
private int prizeFalg =0;
@ApiModelProperty("创建日期")
private String createTime ;
......
package com.polysoft.activity.model.dto;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* @author lvyp
* @date 2021/1/27
*/
@Data
@TableName(value = "t_wish_pic")
public class WishPicDto {
private Long picId;
private Long wishId;
private String picUrl;
private String createTime;
public void setCreateTime(Date date) {
this.createTime = DateUtil.format(date,"yyyy-MM-dd HH:mm:ss");
}
}
......@@ -3,9 +3,11 @@ package com.polysoft.activity.model.param;
import cn.hutool.core.date.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;
/**
* @author lvyp
......@@ -18,7 +20,6 @@ public class AddWishParam {
@NotBlank(message = "用户主键不能为空")
private Long userId ;
@ApiModelProperty("姓名")
@NotBlank(message = "姓名不能为空")
private String userName ;
@ApiModelProperty("城市地址")
@NotBlank(message = "城市地址不能为空")
......@@ -28,4 +29,5 @@ public class AddWishParam {
private String wishContext ;
@ApiModelProperty("0 未中奖 1 中奖")
private int prizeFalg =0;
private List<MultipartFile> multipartFiles;
}
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;
......
......@@ -2,6 +2,7 @@ package com.polysoft.activity.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.polysoft.activity.common.log.LoggerHelper;
import com.polysoft.activity.mapper.UserInfoMapper;
import com.polysoft.activity.model.dto.WechatTokenDto;
import com.polysoft.activity.model.param.ShareLinkParam;
......@@ -37,6 +38,7 @@ public class UserInfoServiceImpl implements UserInfoService {
private String accessTokenUrl;
@Value("${wechat.jsapiTicketUrl}")
private String jsapiTicketUrl;
private final Long divide = 1000L;
@Override
public ApiResult queryAuthUser(String phone) {
UserInfoVO user = mapper.queryAuthUser(phone);
......@@ -51,7 +53,7 @@ public class UserInfoServiceImpl implements UserInfoService {
ShareLinkVO shareLinkVO = new ShareLinkVO();
WechatToken wechatToken = mapper.getWechatToken();
String access_token = null;
if((System.currentTimeMillis()/1000 - wechatToken.getUpdateTime()/1000) > 6600){
if((System.currentTimeMillis()/divide - wechatToken.getUpdateTime()/divide) > 6600){
JSONObject object = restTemplate.getForObject(accessTokenUrl+"appid="+appId+"&secret="+passWord+"", JSONObject.class);
access_token = object.getString("access_token");
WechatTokenDto dto = new WechatTokenDto();
......@@ -61,11 +63,18 @@ public class UserInfoServiceImpl implements UserInfoService {
}else {
access_token = wechatToken.getAccessToken();
}
//请求微信获取车票
JSONObject object = restTemplate.getForObject(jsapiTicketUrl+"access_token="+access_token+"", JSONObject.class);
//车票
String jsapi_ticket = object.getString("ticket");
//随机字符串
String noncestr = UUID.randomUUID().toString().replaceAll("-","");
Long timestamp = System.currentTimeMillis()/1000;
String signStr = "jsapi_ticket"+jsapi_ticket+"&noncestr"+noncestr+"&timestamp"+timestamp+"&"+param.getUrl();
//时间戳
Long timestamp = System.currentTimeMillis()/divide;
//加密前签名字符串
String signStr = "jsapi_ticket="+jsapi_ticket+"&noncestr="+noncestr+"&timestamp="+timestamp+"&url="+param.getUrl();
LoggerHelper.info(this.getClass(),signStr);
LoggerHelper.info(this.getClass(),SHA1.encode(signStr));
shareLinkVO.setAppId(appId);
shareLinkVO.setNoncestr(noncestr);
shareLinkVO.setTimestamp(timestamp);
......
......@@ -2,11 +2,17 @@ package com.polysoft.activity.service.impl;
import com.polysoft.activity.common.utils.BeanTransferUtils;
import com.polysoft.activity.mapper.WishMapper;
import com.polysoft.activity.mapper.WishPicMapper;
import com.polysoft.activity.model.dto.AddWishDto;
import com.polysoft.activity.model.dto.WishPicDto;
import com.polysoft.activity.model.param.AddWishParam;
import com.polysoft.activity.service.WishService;
import com.polysoft.activity.utils.ApiResult;
import com.polysoft.activity.utils.FileUtils;
import com.polysoft.activity.utils.SnowFlakeUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Date;
......@@ -17,11 +23,27 @@ public class WishServiceImpl implements WishService {
@Resource
private WishMapper mapper;
@Resource
private WishPicMapper wishPicMapper;
@Value("${fileUpload.saveWishPicPath}")
private String saveWishPicPath;
@Value("${fileUpload.cllWishPicUrl}")
private String cllWishPicUrl;
@Override
public ApiResult addWish(AddWishParam param) {
AddWishDto dto = BeanTransferUtils.transfer(param,AddWishDto.class);
Long wishId = SnowFlakeUtil.nextId();
for (MultipartFile multipartFile : param.getMultipartFiles()) {
ApiResult result = FileUtils.upload(multipartFile,saveWishPicPath,wishId);
WishPicDto wishPicDto = new WishPicDto();
wishPicDto.setPicId(SnowFlakeUtil.nextId());
wishPicDto.setWishId(wishId);
wishPicDto.setCreateTime(new Date());
wishPicDto.setPicUrl(cllWishPicUrl+result.get("data").toString());
wishPicMapper.insert(wishPicDto);
}
dto.setWishId(wishId);
dto.setCreateTime(new Date());
dto.setPushDate(new Date());
int i = mapper.insert(dto);
......
server:
servlet:
session:
cookie:
http-only: false
context-path: /api
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 21000
spring:
datasource:
druid:
password: Moxi123#
url: jdbc:mysql://114.112.96.30:30029/spring_activity?useUnicode=true&characterEncoding=UTF8&useSSL=false
username: root
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
#dynamic:
# #其他数据源
# datasource:
# dm:
# #dm数据源 在相应的方法上使用 @DataSource("dm")
# password: Moxi123#
# url: jdbc:mysql://114.112.96.30:30029/voice_quality_feichexian?useUnicode=true&characterEncoding=UTF8&useSSL=false
# username: root
#mybatis
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.polysoft.activity.*.vo
global-config:
#数据库相关配置
db-config:
#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: AUTO
#字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
field-strategy: NOT_NULL
logic-delete-value: -1
logic-not-delete-value: 0
banner: false
#原生配置
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
jdbc-type-for-null: 'null'
ftp:
hostname: 9.23.23.101
port: 21
username: uetlyuyinshibie
password: uetlyuyinshibie@101
remoteDir: /home/uetlyuyinshibie/10/RCV/
roadRescueRemoteDir: /home/uetlyuyinshibie/11/RCV/
#存储本地发过过去的文件
remoteDir1: /home/uetlyuyinshibie/70/SND/
localDir: /ccivol_nas/outbound/data/
#我本地
# localDir1: D:/guoshoucaitotest_mp3/data/outBoundCallPlatform/
#存储数据转文件的路径
localDir1: /ccivol_nas/outbound/data_send/
roadRescueLocalDir: /ccivol_nas/outbound/roadRescueData/
wechat:
appId: wx747674121d6fd50a
password: 0c3b082fa27a5b50f79fb7f91aeaa41a
accessTokenUrl: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&
jsapiTicketUrl: https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&
fileUpload:
wishPicUrl: http://quality.item.polyhome.net/spfest/images
wishPicUrl: E:/spring_festvial/images
......@@ -67,4 +67,6 @@ wechat:
password: 0c3b082fa27a5b50f79fb7f91aeaa41a
accessTokenUrl: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&
jsapiTicketUrl: https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&
fileUpload:
saveWishPicPath: /home/spring_fistival/images
cllWishPicUrl: http://quality.item.polyhome.net/spfest/images
......@@ -40,13 +40,6 @@ public class ApiResult extends HashMap<String, Object> {
r.put("msg", msg);
return r;
}
public static ApiResult ok(String msg) {
ApiResult r = new ApiResult();
r.put("msg", msg);
return r;
}
public static ApiResult ok(Map<String, Object> map) {
ApiResult r = new ApiResult();
r.putAll(map);
......
......@@ -3,6 +3,7 @@ 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
......@@ -20,8 +21,7 @@ import java.util.UUID;
@Slf4j
@Component
public class FileUtils {
private static String uploadpath;
public static ApiResult upload(MultipartFile file, String fileType, Long wishId) {
public static ApiResult upload(MultipartFile file,String uploadpath, Long wishId) {
if (file.isEmpty()) {
return ApiResult.error();
}
......@@ -30,35 +30,18 @@ public class FileUtils {
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;
// String path=uploadpath+File.separator+date+File.separator+uuid+fileName;
String path=uploadpath+"/"+date+"/"+uuid+fileName;
dest = new File(path);
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
file.transferTo(dest);
log.info("上传成功");
return ApiResult.ok();
return ApiResult.ok("/"+date+"/"+uuid+fileName);
}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);
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!