Commit c7c19e4f by 陈浩建

融合下单

parent 3cfb8ec4
......@@ -85,6 +85,11 @@
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>com.winsun.framework</groupId>
<artifactId>winsun-utils-redis</artifactId>
<version>${winsun-framework.version}</version>
</dependency>
<dependency>
<groupId>com.winsun.framework</groupId>
......
......@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.winsun.auth.core.common.model.ResponseData;
import com.winsun.bean.*;
import com.winsun.constant.Constant;
import com.winsun.constant.OrderStatus;
import com.winsun.mapper.*;
import com.winsun.utils.*;
......@@ -37,6 +36,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import com.winsun.constant.FilePath;
/**
* 融合办理接口
......@@ -75,6 +75,9 @@ public class RongHeController {
@Resource
private RedisLockUtil redisLockUtil;
@Autowired
private Base64ToImgUtils base64ToImgUtils;
/**
* 跟据合伙人id查找融合套餐信息
*
......@@ -126,12 +129,11 @@ public class RongHeController {
*/
@PostMapping("/createRongHeOrder")
public ResponseData<Object> createRongHeOrder(HttpServletRequest request,HttpServletRequest response){
String orderName = request.getParameter("orderName");
String orderPhone = request.getParameter("orderPhone");
String orderNumber = request.getParameter("orderNumber");
String orderCustomerStudentId = request.getParameter("orderCustomerStudentId");
String orderCustomerAccount = request.getParameter("orderCustomerAccount");
String orderCustomerAccount = request.getParameter("orderCustomerAccountInfo");
String orderCustomerPwd = request.getParameter("orderCustomerPwd");
String orderSetMeal = request.getParameter("orderSetMeal");
String productId = request.getParameter("productId");
......@@ -141,16 +143,23 @@ public class RongHeController {
String rhTime = request.getParameter("rhTime");
String setMealIndex = request.getParameter("setMealIndex");
String imgUrl = request.getParameter("imgUrl");
String filePath = "";
// 生成随机字符串
String uuid = UUID.randomUUID().toString();
try{
// Redis 根据身份证和多媒体账号加锁
redisLockUtil.redisLock(orderNumber,uuid,20);
redisLockUtil.redisLock(orderCustomerAccount,uuid,20);
String uuidIdCard = redisTemplate.opsForValue().get(orderNumber).toString();
String uuidAcc = redisTemplate.opsForValue().get(orderCustomerAccount).toString();
String uuid = UUID.randomUUID().toString();
boolean boo1 = redisLockUtil.redisLock(orderNumber,uuid,10);
boolean boo2 = redisLockUtil.redisLock(orderCustomerAccount,uuid,10);
if(!boo1 || !boo2){
return ResponseData.error("重复下单!");
}
if(StringUtils.isBlank(imgUrl)){
return ResponseData.error("签名失败!");
}
if(StringUtils.isNotBlank(imgUrl)){
filePath = base64ToImgUtils.base64ToImg(imgUrl,FilePath.PATH.getValue()+FilePath.IMGURLPATH.getValue());
}
OrderView orderV = new OrderView();
String mealStr = null;
String byStr = null;
......@@ -193,6 +202,7 @@ public class RongHeController {
byStr = rateArry[index];
prices = priceArry[index] + "元";
}
orderView.setExpenses(expenses+byStr);
orderView.setProductName(product.getProductTitle());// 产品名称
orderView.setOrderDate(new Date()); // 提交时间
......@@ -212,54 +222,50 @@ public class RongHeController {
orderView.setCustomerId("xyzxyql"); // 接入商
orderView.setOrderCustomerType("学生"); // 用户类别
if (webOrderAmount.equals("0")) {
ResponseData<Object> res = null;
try {
if(uuid.equals(uuidIdCard) && uuid.equals(uuidAcc)){
res = createOrder(productId, orderView, partner, rhTime);
}else{
return ResponseData.error("网络超时,请重试");
}
} catch (Exception e) {
e.printStackTrace();
if (webOrderAmount.equals("0")) {
res = createOrder(productId, orderView, partner, rhTime,filePath,"未下单");
}else {
res = createOrder(productId, orderView, partner, rhTime,filePath,"未支付");
}
if (!res.isSuccess()) {
return ResponseData.error("网络超时,请重试!");
}
Order order =(Order) res.getData();
orderV.setOrderRf2(order.getId());
}
orderView.setSetMealIndex(setMealIndex);
orderView.setSetMealIndex(setMealIndex);
Integer insert = 0;
if(uuid.equals(uuidIdCard) && uuid.equals(uuidAcc)){
insert = orderViewMapper.insert(orderView);
}else{
ResponseData.error("网络超时,请重试");
}
if (insert == 1) {
redisLockUtil.deleteLock(orderNumber);
redisLockUtil.deleteLock(orderCustomerAccount);
orderV.setOrderId(orderView.getOrderId());
orderV.setOrderSeq(orderSeq);
orderV.setWebOrderAmount(webOrderAmount);
orderV.setSignImg(filePath);
return ResponseData.success(orderV, "订单提交完成!");
}
}catch (Exception e){
return ResponseData.error("网络超时,请重试!");
}finally {
redisLockUtil.deleteLock(orderNumber);
redisLockUtil.deleteLock(orderCustomerAccount);
return ResponseData.error("请重新提交");
redisTemplate.delete(orderNumber);
redisTemplate.delete(orderCustomerAccount);
}
return ResponseData.error("请重新提交");
}
public ResponseData<Object> createOrder(String productId, OrderView orderView, String userId, String rhTime){
public ResponseData<Object> createOrder(String productId, OrderView orderView, String userId, String rhTime,String filePath,String orderStatus){
String uuid = UUID.randomUUID().toString();
String id = uuid.split("-")[0] + uuid.split("-")[1];
Order order = new Order();
order.setId(id);
SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sd2 = new SimpleDateFormat("yyyyMM");
String orderNumber = "YRYM" + sd.format(new Date()) + uuid.substring(1, 12);
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Date parse = null;
try {
......@@ -268,37 +274,43 @@ public class RongHeController {
e.printStackTrace();
}
order.setRhTime(parse);
order.setOrderNumber(orderView.getOrderSeq());
order.setOrderNumber(orderNumber);
order.setOrderStatus(OrderStatus.NOTPAID.getName());
order.setHehuorenId(userId);
order.setCustomerName(orderView.getOrderName());
order.setContactNumber(orderView.getOrderPhone());
order.setBusinessNumber(orderView.getOrderPhone());
order.setIdCard(orderView.getOrderNumber());
order.setCreateTime(new Date());
order.setUpdateTime(new Date());
order.setUserType("3");
order.setNetNumber(orderView.getOrderCustomerAccount());
order.setNetPassword(orderView.getOrderCustomerPwd());
order.setUserSchool(orderView.getOrderUniversityName());
order.setExpenses(orderView.getOrderSetMeal());
order.setKdOrderId(orderView.getOrderSeq());
order.setKapin("融合办理");
order.setStudenCard(orderView.getOrderCustomerStudentId());
order.setNetNumber(orderView.getOrderCustomerAccount().toString());
order.setNetPassword(orderView.getOrderCustomerPwd().toString());
order.setUserSchool(orderView.getOrderUniversityName().toString());
order.setExpenses(orderView.getOrderSetMeal().toString());
order.setKdOrderId(orderView.getOrderSeq().toString());
SysUser sysUser = sysUserMapper.selectById(userId);
order.setHehuorenPhone(sysUser.getPhone());
order.setHehuorenPhone(sysUser.getPhone().toString());
String schoolId = appMapper.selectSchoolId(userId);
School school = schoolMapper.selectById(schoolId);
order.setHehuorenSchool(school.getSchoolName());
order.setHehuorenName(sysUser.getName());
order.setPackageId(productId);
order.setHehuorenArea(sysUser.getSubstName());
/* List<String> userId1 = appMapper.selectsupervisorBySchool(schoolId);
order.setSignImg(filePath);
List<String> userId1 = appMapper.selectsupervisorBySchool(schoolId);
SysUser user = sysUserMapper.selectById(userId1.get(0));
order.setSupervisorName(user.getName());
order.setLzgh(school.getLzgh());*/
order.setLzgh(school.getLzgh());
// 根据订单号,获取该订单信息
// 根据学校名称,获取该学校信息
Product product = productMapper.selectById(productId);
Wrapper<UniversityInfo> uiWrapper = new EntityWrapper<>();
uiWrapper.eq("university_id", product.getUniversityId());
List<Map<String, Object>> list1 = universityInfoMapper.selectMaps(uiWrapper);
order.setOrderStatus("未下单");
order.setOrderStatus(orderStatus);
orderMapper.insert(order);
appMapper.inserOrderHis(id, "待下单!", new Date(), orderView.getOrderName());
return ResponseData.success(order, "订单创建成功");
......@@ -328,7 +340,7 @@ public class RongHeController {
dataMapping.put("status", "已支付");
orderViewMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper);
Wrapper<Order> objectEntityWrapper = new EntityWrapper<>();
objectEntityWrapper.eq("order_number", orderseq);
objectEntityWrapper.eq("kd_order_id", orderseq);
Map<String, Object> dataMapping2 = new HashMap<>();
dataMapping2.put("order_status", "未下单");
orderMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping2), objectEntityWrapper);
......@@ -340,23 +352,23 @@ public class RongHeController {
/**
* 支付接口
*
* @param orderId
* @param ipay
* @param userId
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "orderPay")
public ResponseData<Object> toPaymentPlatformPage(@RequestParam("orderId") String orderId, @RequestParam("ipay") String ipay, @RequestParam("userId") String userId, @RequestParam("rhTime") String rhTime, HttpServletRequest request, HttpServletResponse response) throws Exception {
@PostMapping(value = "orderPay")
public ResponseData<Object> toPaymentPlatformPage(HttpServletRequest request, HttpServletResponse response) throws Exception {
String orderId = request.getParameter("orderId");
String ipay = request.getParameter("ipay");
String userId = request.getParameter("userId");
String rhTime = request.getParameter("rhTime");
String result = JsoupMethodZhifu(orderId, ipay, userId, request, response,rhTime);
return ResponseData.success(result);
}
@RequestMapping("/selectUniversity")
public ResponseData<UniversityInfo> selectUniversity(@RequestParam("universityId") String universityId) {
UniversityInfo universityInfo = universityInfoMapper.selectById(universityId);
return ResponseData.success(universityInfo);
}
......@@ -405,18 +417,19 @@ public class RongHeController {
}
// 融合回调后端接口地址
// map.put("BACKDROPURL", Constant.TOMCATURL + "/rongHe/toSubmisOrderPreser");
map.put("BACKDROPURL", "http://3715zj2369.qicp.vip/ciop/rongHe/toSubmisOrderPreser.do");
map.put("BACKDROPURL", "http://3715zj2369.qicp.vip/ciop/rongHe/toSubmisOrderPreser");
String str = "ORDERSEQ=" + orderView.getOrderSeq() + "&ORDERDATE=" + ft.format(orderdate) + "&ORDERAMOUNT=" + orderView.getWebOrderAmount() + "&KEY=" + Constant.APPK;//商户标识
//* 将值转换为大写 *//*
map.put("MAC", MD5Utils.md5(str).toUpperCase());
int PAYTYPE = 1; // 支付类型
int IPAY = 1; // 支付平台
log.info("----------支付渠道(0翼支付网厅,1支付宝,3微信):" + ipay);
if (Constant.Payment3.equals(ipay)) {
PAYTYPE = 5;
IPAY = 3;
}
log.info("----------支付渠道(0翼支付网厅,1支付宝,3微信):" + ipay);
map.put("PAYTYPE", String.valueOf(PAYTYPE));
map.put("IPAY", String.valueOf(IPAY));
log.info("----------支付请求参数:" + map);
......@@ -449,41 +462,9 @@ public class RongHeController {
if (StringUtils.isNotBlank(msg) && msg.equals("success")) {
dataMapping.put("payType", PAYTYPE + "");
log.info("====默认受理未付费,之后可通过提交订单到智能平台后再更新状态====");
dataMapping.put("status", "未支付");
dataMapping.put("status", "100");
log.info("====保存到本地数据库 ====");
orderViewMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper);
Order order = new Order();
order.setId(id);
order.setOrderNumber(orderView.getOrderSeq());
order.setHehuorenId(userId);
order.setCustomerName(orderView.getOrderName());
order.setContactNumber(orderView.getOrderPhone());
order.setIdCard(orderView.getOrderNumber());
order.setCreateTime(new Date());
order.setUserType("3");
order.setKapin("融合办理");
order.setNetNumber(orderView.getOrderCustomerAccount());
order.setNetPassword(orderView.getOrderCustomerPwd());
order.setUserSchool(orderView.getOrderUniversityName());
order.setExpenses(orderView.getOrderSetMeal());
order.setKdOrderId(orderView.getOrderSeq());
SysUser sysUser = sysUserMapper.selectById(userId);
order.setHehuorenPhone(sysUser.getPhone());
String schoolId = appMapper.selectSchoolId(userId);
School school = schoolMapper.selectById(schoolId);
order.setHehuorenSchool(school.getSchoolName());
order.setHehuorenName(sysUser.getName());
order.setHehuorenArea(sysUser.getSubstName());
List<String> userId1 = appMapper.selectsupervisorBySchool(schoolId);
SysUser user = sysUserMapper.selectById(userId1.get(0));
order.setSupervisorName(user.getName());
order.setLzgh(school.getLzgh());
order.setOrderStatus("未下单");
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Date parse = simpleDateFormat1.parse(rhTime);
order.setRhTime(parse);
orderMapper.insert(order);
appMapper.inserOrderHis(id, "支付请求提交!", new Date(), orderView.getOrderName());
return result;
}
......
......@@ -332,31 +332,20 @@ public class codeManagerController {
String accountNumber = request.getParameter("accountNumber");// 多媒体账号
// 判断身份证号是否在清单中
List<Map<String, Object>> list = orderMapper.selectReportOrder(idCard);
if (!list.isEmpty() && list.size() > 0) {
String orderSeq = list.get(0).get("kd_order_id").toString();
String user_type = list.get(0).get("user_type").toString();
String order_status = list.get(0).get("order_status").toString();
if(StringUtils.isNotBlank(user_type)&&(user_type.equals("3")||user_type.equals("5")||user_type.equals("9"))){
Wrapper<OrderView> wrapper = new EntityWrapper<>();
wrapper.eq(StringUtils.isNotBlank(orderSeq), "orderSeq", orderSeq);
wrapper.ne("status", OrderStatus.INVALID.getId());
List<OrderView> orderViews = orderViewMapper.selectList(wrapper);
if(orderViews.isEmpty()){
return ResponseData.error("订单异常");
}
if (StringUtils.isBlank(orderViews.get(0).getUptranseq())) {
mapData.put("orderId", list.get(0).get("id").toString());
mapData.put("orderSeq", orderViews.get(0).getOrderSeq());
if(list.size()>0){
if (StringUtils.isBlank(list.get(0).get("uptranseq").toString())) {
mapData.put("orderId", list.get(0).get("orderId").toString());
mapData.put("orderSeq", list.get(0).get("orderSeq").toString());
mapData.put("code", 2);//"你已存在未支付的订单,请前往支付页面"
return ResponseData.error(mapData,"你已存在未支付的订单,请前往支付页面");
} else {
mapData.put("orderSeq", orderViews.get(0).getOrderSeq());
mapData.put("uptranseq", orderViews.get(0).getUptranseq());
mapData.put("orderSeq", list.get(0).get("orderSeq").toString());
mapData.put("uptranseq", list.get(0).get("uptranseq").toString());
mapData.put("code", 0); //不可重复下单"你已存在正在处理的订单,请勿重复下单"
return ResponseData.error(mapData,"你已存在正在处理的订单,请勿重复下单");
}
}
}
// 判断是否在宽带清单中
List<Map<String, Object>> accountNumberList = orderMapper.checkOldKdUser(accountNumber);
if(!accountNumberList.isEmpty() && accountNumberList.size() > 0) { //已存在纪录
......
#############################################################################
#ػFTP
#
ftp_host=127.0.0.1
ftp_port=21
ftp_username=root
ftp_password=qUDZj/w2Rus=
ftp_sys=E:/FTP
hhr_img=/datas/apps/web/tomcats/apache-tomcat-7.0.100-hhr/hhrphoto
#hhr_img=D:/a
sign_img=/datas/apps/web/tomcats/apache-tomcat-7.0.100-hhr/hhr-sign-img
#sign_img=D:/a
yrym_sign=rQXPSHvWvHasj17#5L70ux3KvlWNqoVQ
......@@ -340,19 +340,19 @@ public class Order implements Serializable{
/**
*
*/
@TableField(value = "supervisor_name")
@TableField(value = "hehuoren_phone")
private String hehuorenPhone;
/**
*
*/
@TableField(value = "lzgh")
@TableField(value = "supervisor_name")
private String supervisorName;
/**
*
*/
@TableField(value = "order_number")
@TableField(value = "lzgh")
private String lzgh;
/**
......
......@@ -160,5 +160,6 @@ public class OrderView implements Serializable {
@TableField(value = "set_meal_index")
private String setMealIndex;
@TableField(exist=false)
private String signImg;
}
\ No newline at end of file
......@@ -12,8 +12,9 @@ import java.util.Map;
public enum FilePath {
//
BACKGROUNDIMG("套餐背景图片基础路径","enclosure"),
PATH("一人一码基础路径","enclosure/images/"),
IMPORTPATH("导出下载路径","enclosure/export/");
PATH("一人一码基础路径","D:/enclosure/images/"),
IMPORTPATH("导出下载路径","enclosure/export/"),
IMGURLPATH("受理协议表存放路径","imgUrl/");
FilePath(String id, String value) {
this.id = id;
this.value = value;
......
package com.winsun.utils;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
......@@ -13,8 +15,9 @@ import java.util.UUID;
* Base64流转图片工具类
* @author calvin
*/
@Component
public class Base64ToImgUtils {
public static String base64ToImg(String imgData, String hhr_img) throws IOException {
public String base64ToImg(String imgData, String hhr_img){
String filePath = "";
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
uuid = uuid.substring(1, 12);
......@@ -60,7 +63,7 @@ public class Base64ToImgUtils {
return filePath;
}
//path 为图片在服务器的绝对路径
public static String imgToBase64(String url) {
public String imgToBase64(String url) {
try {
File file = new File(url);
FileInputStream fis;
......
......@@ -25,11 +25,15 @@ public class RedisLockUtil {
* @param releaseTime 锁过期时间 防止死锁
* @return
*/
public synchronized Boolean redisLock(String key,String value,long releaseTime){
public Boolean redisLock(String key,String value,long releaseTime){
try{
boolean boo = redisTemplate.opsForValue().setIfAbsent(key,value);
boolean boo = false;
synchronized(this){
boo = redisTemplate.opsForValue().setIfAbsent(key,value);
}
if(boo){
redisTemplate.expire(key, 10, TimeUnit.SECONDS);
redisTemplate.expire(key, releaseTime, TimeUnit.SECONDS);
return true;
}
}catch (Exception e){
......
......@@ -174,7 +174,7 @@
<select id="selectReportOrder" parameterType="String" resultType="HashMap">
select * from hhr_order where user_type in('3','5','9','10') and order_status !='异常单' and id_card=#{idCard}
select * from order_view where orderNumber=#{idCard} and status in('100','未支付')
</select>
<select id="checkOldKdUser" parameterType="String" resultType="HashMap">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment