Commit df1a0adc by 陈浩建

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	common/src/main/java/com/winsun/bean/UniversityInfo.java
#	common/src/main/java/com/winsun/constant/Constant.java
#	common/src/main/java/com/winsun/mapper/UniversityInfoMapper.java
parents 8548bcb6 ee4baef8
package com.winsun.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.netflix.discovery.converters.Auto;
import com.winsun.auth.core.annotion.Permission;
import com.winsun.auth.core.common.model.ResponseData;
import com.winsun.bean.*;
import com.winsun.constant.OrderStatus;
import com.winsun.mapper.*;
import com.winsun.outSideSystem.IntelligenceSendOrder;
import com.winsun.smsUtils.SendSmsAndMail;
import com.winsun.utils.RandomUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* 单宽进融
* @author chengfengluo
* @date 2021-01-26 17:30:39
*/
@RequestMapping("toIntegrate")
@RestController
@Slf4j
public class SingleBroadToIntegrateController {
@Autowired
private HhrUserMapper hhrUserMapper;
@Autowired
private ProductMapper productMapper;
@Autowired
private OrderViewMapper orderViewMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private UniversityInfoMapper universityInfoMapper;
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private KdPhoneMapper kdPhoneMapper;
@Autowired
private OrderHistoryMapper orderHistoryMapper;
private static String TOINTEGRATE = "TOINTEGRATE";
@Autowired
private IntelligenceSendOrder intelligenceSendOrder;
/**
* 查询订单信息
* @param orderSeq
* @return
*/
@PostMapping("getOrderSetMeal")
public ResponseData<Map<String, Object>> getOrderBySeq(@RequestParam("orderSeq") String orderSeq) {
Wrapper<OrderView> wrapper = new EntityWrapper<>();
wrapper.eq("orderSeq", orderSeq);
List<OrderView> orderViews = orderViewMapper.selectList(wrapper);
if (orderViews != null && orderViews.size() > 0) {
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("orderSetMeal", orderViews.get(0).getOrderSetMeal());
return ResponseData.success(resultMap);
}else{
return ResponseData.error("未查询到订单信息");
}
}
/**
* 获取大学宽带信息
* @param hehuorenId
* @return
*/
@PostMapping("getUniversityInfo")
public ResponseData<Map<String, Object>> getUniversityInfo(@RequestParam("universityId") String universityId) {
UniversityInfo universityInfo = universityInfoMapper.selectById(universityId);
Map<String, Object> resultMap = new HashMap<>();
if (universityInfo != null && StringUtils.isNotBlank(universityInfo.getExpenses())) {
resultMap.put("expenses",universityInfo.getExpenses());
resultMap.put("domainName", universityInfo.getUniversityDomainName());
return ResponseData.success(resultMap);
}
return ResponseData.error("未找到当前合伙人大学宽带速率信息");
}
/**
* 获取验证码
* @param phone
* @return
*/
@PostMapping("getCode")
public ResponseData<Map<String, Object>> getCode(@RequestParam(value = "phone") String phone) {
try{
// 判断号码是否在优惠清单中,已有新用户订单或者再优惠号码清单中
Wrapper<KdPhone> kdPhoneWrapper = new EntityWrapper<>();
kdPhoneWrapper.eq("phone", phone);
List<KdPhone> kdPhones = kdPhoneMapper.selectList(kdPhoneWrapper);
Wrapper<Order> orderWrapper = new EntityWrapper<>();
orderWrapper.eq("user_type", "0");
orderWrapper.eq("order_status", "已完成");
orderWrapper.eq("business_number", phone);
List<Order> orders = orderMapper.selectList(orderWrapper);
if ((kdPhones != null && kdPhones.size() > 0) || (orders != null && orders.size() > 0)) {
String random = String.valueOf((int) ((RandomUtil.getSecrityRandom() * 9 + 1) * 100000));
redisTemplate.opsForValue().set(SingleBroadToIntegrateController.TOINTEGRATE + phone, random, 30, TimeUnit.MINUTES);
SendSmsAndMail.sendSms(phone, random, "7");
}else{
return ResponseData.error("该号码不在优惠清单中");
}
}catch(Exception e) {
return ResponseData.error("获取验证码失败");
}
return ResponseData.success(null, "获取验证码成功");
}
/**
* 校验手机号码
* @param phone
* @param code
* @return
*/
@PostMapping("checkPhoneAndCode")
public ResponseData<Map<String, Object>> checkPhoneAndCode(@RequestParam("phone") String phone,
@RequestParam("code") String code) {
Object o = redisTemplate.opsForValue().get(SingleBroadToIntegrateController.TOINTEGRATE + phone);
if (o == null) {
return ResponseData.error("请重新获取验证码");
}
if (!code.equals(o)) {
return ResponseData.error("验证码错误");
}
redisTemplate.delete(SingleBroadToIntegrateController.TOINTEGRATE + phone);
return ResponseData.success(null,"校验成功");
}
/**
* 获取 产品/大学单宽信息
* @param hehuorenId
* @return
*/
@PostMapping("getProductBroadInfo")
public ResponseData<Product> getProductBroadInfo(String hehuorenId) {
// 产品名称、学校名称、套餐介绍(product_rf2)
Map<String, Object> productByUserId = hhrUserMapper.getProductByUserId(hehuorenId);
if (productByUserId != null && productByUserId.get("bandproduct_id") != null) {
Product product = productMapper.selectById(productByUserId.get("bandproduct_id").toString());
if (product == null) {
return ResponseData.error("学校产品信息错误");
}
return ResponseData.success(product);
}else{
return ResponseData.error("该合伙人未配置学校产品");
}
}
/**
* 校验宽带账号,智能平台下单
* @param request
* @param toIntegrateOrderParam 下单参数
* @return
*/
@PostMapping("sendOrder")
public ResponseData<Map<String, Object>> sendOrder(HttpServletRequest request,
ToIntegrateOrderParam toIntegrateOrderParam) {
// 正常下单保存到数据库中
log.info(JSONObject.toJSONString(toIntegrateOrderParam));
Map<String, Object> resultMap = new HashMap<>();
// 查询订单类型为(3、5、9、10)的 !异常单
List<Order> orders = orderMapper.selectRepeatOrder(toIntegrateOrderParam.getIdCard());
if (orders != null && orders.size() != 0) {
return ResponseData.error("已有其它订单");
}
// 获取合伙人信息
HhrUser hhrUser = hhrUserMapper.selectById(toIntegrateOrderParam.getHehuorenId());
String jiltKdy = "0";
// 获取产品信息
Product product = null;
Map<String, Object> productByUserId = hhrUserMapper.getProductByUserId(toIntegrateOrderParam.getHehuorenId());
if (productByUserId != null && productByUserId.get("bandproduct_id") != null) {
product = productMapper.selectById(productByUserId.get("bandproduct_id").toString());
if (product == null) {
return ResponseData.error("学校产品信息错误");
}
if (productByUserId.get("jilt_kdy") != null) {
jiltKdy = productByUserId.get("jilt_kdy").toString();
}
}else{
return ResponseData.error("该合伙人未配置学校产品");
}
// 获取大学宽带信息
UniversityInfo universityInfo = universityInfoMapper.selectById(product.getUniversityId());
if (universityInfo == null) {
return ResponseData.error("大学宽带信息获取失败,请联系督导配置");
}
// 判断是否在宽带清单中
List<Map<String, Object>> maps = orderMapper.selectBroadList(
toIntegrateOrderParam.getNetNumber() + universityInfo.getUniversityDomainName());
String dmt = "";
if (maps == null || maps.size() == 0) {
return ResponseData.error("宽带号码不在清单中");
}else{
if (maps.get(0).get("id") != null) {
dmt = maps.get(0).get("id").toString();
}
}
// 保存到order_view
OrderView orderView = new OrderView();
orderView.setOrderSeq(RandomUtil.RandomNumber(20)); // 订单号码
orderView.setProductName(product.getProductTitle()); // 产品名称
orderView.setOrderSetMeal(universityInfo.getExpenses()); // 套餐
orderView.setOrderUniversityName(universityInfo.getUniversityName()); // 学校
orderView.setOrderName(toIntegrateOrderParam.getName()); // 姓名
orderView.setOrderDate(new Date()); // 提交时间
orderView.setStatus(OrderStatus.PENDINGSUBMISSION.getId()); // 订单状态(待提交)
orderView.setOrderRegion(universityInfo.getUniversityRegion()); // 区域
orderView.setIPay("0"); // 支付平台
orderView.setPayType("1"); // 支付方式
orderView.setWebOrderAmount("0"); // 产品价格
orderView.setCustomerId("xyzxyql"); // 接入商
orderView.setOrderPhone(toIntegrateOrderParam.getContactPhone()); // 联系电话
orderView.setOrderNumber(toIntegrateOrderParam.getIdCard()); // 身份证号码
orderView.setOrderCustomerType(universityInfo.getUniversityUserCategory()); // 用户类别
orderView.setOrderCustomerRemarks(toIntegrateOrderParam.getBusinessNumber());
orderView.setOrderCustomerAccount(
toIntegrateOrderParam.getNetNumber() + universityInfo.getUniversityDomainName()); // 多媒体账号
orderView.setExpenses(universityInfo.getExpenses()); // 套餐
orderViewMapper.insert(orderView);
// TODO 获取签名图片地址
// 保存到hhr_order
Order order = new Order();
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
uuid = uuid.substring(1, 12);
order.setId(uuid);
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); // 设置日期格式
order.setOrderNumber("YRYM" + df.format(new Date()) + uuid);
order.setOrderStatus("未下单"); // 订单状态
order.setHehuorenId(toIntegrateOrderParam.getHehuorenId()); // 合伙人id
order.setCustomerName(toIntegrateOrderParam.getName()); // 客户姓名
order.setBusinessNumber(toIntegrateOrderParam.getBusinessNumber()); // 客户手机号码
order.setIdCard(toIntegrateOrderParam.getIdCard()); // 客户身份证
order.setCreateTime(new Date()); // 订单创建时间
order.setKapin("单宽进融"); // 卡品
order.setDmtNumber(dmt); // 宽带接入号
order.setUserType("10"); // 订单类型-单宽进融
order.setKdOrderId(orderView.getOrderSeq()); // 宽带id
order.setContactNumber(toIntegrateOrderParam.getContactPhone()); // 联系方式
try {
if (StringUtils.isNotBlank(toIntegrateOrderParam.getRhTime())) {
order.setRhTime(df.parse(toIntegrateOrderParam.getRhTime())); // 融合时间
}
}catch(Exception e) {
log.info(e.getMessage());
}
// 获取合伙人信息(账号、姓名、区域、学校)
Map<String, Object> selectHehuorenInfo = hhrUserMapper.selectHehuorenInfo(toIntegrateOrderParam.getHehuorenId());
if (!selectHehuorenInfo.isEmpty()) {
if (selectHehuorenInfo.get("phone") != null) {
order.setHehuorenPhone(selectHehuorenInfo.get("phone").toString());
}
if (selectHehuorenInfo.get("name") != null) {
order.setHehuorenName(selectHehuorenInfo.get("name").toString());
}
if (selectHehuorenInfo.get("sub_name") != null) {
order.setHehuorenArea(selectHehuorenInfo.get("sub_name").toString());
}
if (selectHehuorenInfo.get("school_name") != null) {
order.setHehuorenSchool(selectHehuorenInfo.get("school_name").toString());
}
}
// 获取督导信息(学校揽装工号、督导姓名)
List<Map<String, Object>> selectSupervisor = hhrUserMapper.selectSupervisor(toIntegrateOrderParam.getHehuorenId());
if (selectSupervisor != null && selectSupervisor.size() > 0) {
if (selectSupervisor.get(0).get("ddname") != null) {
order.setSupervisorName(selectSupervisor.get(0).get("ddname").toString());
}
if (selectSupervisor.get(0).get("lzgh") != null) {
order.setLzgh(selectSupervisor.get(0).get("lzgh").toString());
}
}
orderMapper.insert(order);
// 无融合时间直接下单
if (toIntegrateOrderParam.getRhTime() == null || StringUtils.isBlank(toIntegrateOrderParam.getRhTime())) {
Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", uuid);
new Thread(() -> {
try {
intelligenceSendOrder.integrateSendOrder(order, true);
}catch(Exception e) {
e.printStackTrace();
log.info("融合下单失败!");
}
}).start();
}
// 插入历史表
OrderHistory orderHistory = new OrderHistory();
orderHistory.setOrderId(uuid);
orderHistory.setCreateDate(new Date());
orderHistory.setOperator(toIntegrateOrderParam.getName());
orderHistory.setStatus("甩单单宽进融下单成功");
if ("1".equals(jiltKdy)) {
orderHistory.setStatus("不甩单单宽进融下单成功");
}
orderHistoryMapper.insert(orderHistory);
resultMap.put("kdId", orderView.getOrderSeq());
resultMap.put("orderSetMeal", orderView.getOrderSetMeal());
return ResponseData.success(resultMap, "下单成功");
}
}
...@@ -13,6 +13,12 @@ public class BroadBandOrder extends Order{ ...@@ -13,6 +13,12 @@ public class BroadBandOrder extends Order{
*/ */
@TableField(value = "orderSeq") @TableField(value = "orderSeq")
private String orderSeq; private String orderSeq;
/**
* 订单号码
*/
@TableField(value = "kd_order_id")
private String kdOrderId;
/** /**
* 产品名称 * 产品名称
*/ */
......
...@@ -22,7 +22,7 @@ public class KdPhone implements Serializable { ...@@ -22,7 +22,7 @@ public class KdPhone implements Serializable {
/** /**
* *
*/ */
@TableId(value = "d",type = IdType.AUTO) @TableId(value = "id",type = IdType.AUTO)
private int id; private int id;
/** /**
* *
......
package com.winsun.bean;
import lombok.Data;
/**
* 单宽进融下单参数
* @author chengfengluo
* @date 2021-01-26 18:30:59
*/
@Data
public class ToIntegrateOrderParam {
/**
* 姓名
*/
private String name;
/**
* 宽带账号
*/
private String netNumber;
/**
* 身份证
*/
private String idCard;
/**
* 办理号码
*/
private String businessNumber;
/**
* 联系号码
*/
private String contactPhone;
/**
* 合伙人id
*/
private String hehuorenId;
/**
* 融合时间
*/
private String rhTime;
}
...@@ -104,5 +104,5 @@ public class Constant { ...@@ -104,5 +104,5 @@ public class Constant {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
...@@ -48,4 +48,25 @@ public interface HhrUserMapper extends BaseMapper<HhrUser> { ...@@ -48,4 +48,25 @@ public interface HhrUserMapper extends BaseMapper<HhrUser> {
@Param("toWeekStart")String toWeekStart, @Param("toWeekEnd")String toWeekEnd, @Param("toWeekStart")String toWeekStart, @Param("toWeekEnd")String toWeekEnd,
@Param("toMonthStart")String toMonthStart, @Param("toMonthEnd")String toMonthEnd, @Param("toMonthStart")String toMonthStart, @Param("toMonthEnd")String toMonthEnd,
@Param("isComplete") boolean isComplete); @Param("isComplete") boolean isComplete);
/**
* 根据合伙人获取产品id
* @param hehuorenId
* @return
*/
Map<String, Object> getProductByUserId(@Param("hehuorenId") String hehuorenId);
/**
* 查询督导姓名、揽装工号
* @param hehuorenId
* @return
*/
List<Map<String, Object>> selectSupervisor(@Param("hehuorenId") String hehuorenId);
/**
* 查询合伙人信息
* @param hehuorenId
* @return
*/
Map<String, Object> selectHehuorenInfo(@Param("hehuorenId") String hehuorenId);
} }
...@@ -94,4 +94,23 @@ public interface OrderMapper extends BaseMapper<Order> { ...@@ -94,4 +94,23 @@ public interface OrderMapper extends BaseMapper<Order> {
List<BroadBandOrder> selectBroadBandOrderList(Page<BroadBandOrder> page, BroadBandOrder broadBandOrder); List<BroadBandOrder> selectBroadBandOrderList(Page<BroadBandOrder> page, BroadBandOrder broadBandOrder);
/**
* 查询重复订单
* @param idCard
* @return
*/
List<Order> selectRepeatOrder(String idCard);
/**
* 查询宽带清单
* @param accountNumber
* @return
*/
List<Map<String, Object>> selectBroadList(String accountNumber);
/**
* 更新已完成订单
* @return
*/
int updateCompleteOrder();
} }
...@@ -18,5 +18,5 @@ public interface UniversityInfoMapper extends BaseMapper<UniversityInfo> { ...@@ -18,5 +18,5 @@ public interface UniversityInfoMapper extends BaseMapper<UniversityInfo> {
List<Map<String, Object>> getBroadBandConfigList(Page page, List<Map<String, Object>> getBroadBandConfigList(Page page,
@Param("productUniversity") String productUniversity, @Param("productRegion") String productRegion); @Param("productUniversity") String productUniversity, @Param("productRegion") String productRegion);
List<Map<String, Object>> selectProductManager(String id);
} }
package com.winsun.outSideSystem;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.netflix.discovery.converters.Auto;
import com.winsun.bean.Order;
import com.winsun.bean.OrderHistory;
import com.winsun.bean.OrderView;
import com.winsun.bean.UniversityInfo;
import com.winsun.constant.Constant;
import com.winsun.mapper.*;
import com.winsun.utils.BeanUtil;
import com.winsun.utils.SignUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.net.ssl.SSLHandshakeException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author chengfengluo
* @date 2021-01-28 15:36
*/
@Slf4j
@Component
public class IntelligenceSendOrder {
@Autowired
private UniversityInfoMapper universityInfoMapper;
@Autowired
private OrderViewMapper orderViewMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private HhrUserMapper hhrUserMapper;
@Autowired
private OrderHistoryMapper orderHistoryMapper;
/**
* 单宽下单公共类
* @param order hhr_order map类型
*/
public void singleBroadSendOrder(Map<String, Object> order) throws Exception {
// 初始化下单支付参数
String ORDERSEQ = "", ORDERAMOUNT = "", ORDERREQTRANSEQ = "", UPTRANSEQ = "";
Map<String, Object> orderMap = null;
Map<String, Object> schoolMap = null;
List<Map<String, Object>> list1 = new ArrayList<>();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String currentTimeStr = "";
ORDERSEQ = order.get("kd_order_id").toString();
currentTimeStr = simpleDateFormat.format(new Date());
Wrapper<OrderView> orderViewWrapper = new EntityWrapper<>();
orderViewWrapper.eq("orderSeq", ORDERSEQ);
List<Map<String, Object>> orderViewMaps = orderViewMapper.selectMaps(orderViewWrapper);
if (orderViewMaps != null && orderViewMaps.size() > 0) {
orderMap = orderViewMaps.get(0);
}
if (orderMap == null) {
log.info("错误记录:" + JSONObject.toJSONString(order));
log.info("订单号:" + ORDERSEQ + ",在order_view表中无记录,无法进行智能平台下单");
return;
}
ORDERAMOUNT = orderMap.get("webOrderAmount") != null ? orderMap.get("webOrderAmount").toString() : "0";
ORDERREQTRANSEQ = orderMap.get("orderReqtranSeq") != null ? orderMap.get("orderReqtranSeq").toString() : "";
UPTRANSEQ = orderMap.get("uptranseq") != null ? orderMap.get("uptranseq").toString() : "";
// 根据学校名称,获取该学校信息
List<Map<String, Object>> hehuoren_id =
universityInfoMapper.selectProductManager(order.get("hehuoren_id").toString());
if (hehuoren_id.size() > 0 && hehuoren_id.get(0).get("university_id") != null) {
Wrapper<UniversityInfo> universityInfoWrapper = new EntityWrapper<>();
universityInfoWrapper.eq("universityId", hehuoren_id.get(0).get("university_id").toString());
List<Map<String, Object>> findUniversityById = universityInfoMapper.selectMaps(universityInfoWrapper);
schoolMap = findUniversityById.get(0);
} else {
Wrapper<UniversityInfo> universityInfoWrapper = new EntityWrapper<>();
universityInfoWrapper.eq("university_name", orderMap.get("orderUniversityName"));
universityInfoWrapper.eq("university_region", orderMap.get("orderRegion"));
list1 = universityInfoMapper.selectMaps(universityInfoWrapper);
schoolMap = list1.get(0);
}
if (orderMap.get("orderSeqThd") == null || "".equals(orderMap.get("orderSeqThd"))) {
// 1、获取产品ID
JSONObject productJsonObject = getProductId(currentTimeStr, 0);
log.info("----------调用智能平台的产品接口返回参数:" + productJsonObject);
// 2、获取销售品ID
if (productJsonObject.toString().indexOf("list") == -1) {
return;
}
JSONArray list = productJsonObject.getJSONArray("list");
String productId = null; // 产品id
ORDERAMOUNT = ORDERAMOUNT.replace("元", "");
ORDERAMOUNT = ORDERAMOUNT.replace(".00", "");
String productName = "校园宽带" + ORDERAMOUNT + "元";
if (ORDERAMOUNT.contains("0.01")) {
productName = "校园宽带30元";
} else if (ORDERAMOUNT.contains("0.02")) {
productName = "校园宽带300元";
}
System.out.println("------" + productName);
// productName = "校园宽带30元";
for (int i = 0; i < list.size(); i++) {
net.sf.json.JSONObject itmeJson = net.sf.json.JSONObject.fromObject(list.get(i));
// 判断获取的全部产品与订单产品符合的拿取对应的ID
if (itmeJson.getString("name").indexOf(productName) != -1) {
productId = itmeJson.getString("id"); // 获取对应产品ID
break;
}
}
log.info("----------根据返回参数获取产品ID:" + productId);
String saleId = null; // 销售id
JSONObject saleJsonObject = getSaleId(productId, currentTimeStr, 0); // 获取销售ID
log.info("----------调用智能平台的获取销售品接口返回值:" + saleJsonObject);
JSONArray saleList = saleJsonObject.getJSONArray("list");
net.sf.json.JSONObject itmeJson = net.sf.json.JSONObject.fromObject(saleList.get(0));
saleId = itmeJson.getString("saleId");
setPriceIndex(schoolMap, orderMap, ORDERAMOUNT);
// 3、提交订单到智能平台
JSONObject submitOrderJsonObject =
getOrderInfo(
schoolMap,
orderMap,
currentTimeStr,
productId,
saleId,
ORDERSEQ,
UPTRANSEQ,
ORDERAMOUNT,
ORDERREQTRANSEQ,
0);
log.info(
"----------调用单宽带接口(提交订单至智能平台)并返回参数信息---status:"
+ submitOrderJsonObject.get("status")
+ " msg:"
+ submitOrderJsonObject.get("msg")
+ " orderNum:"
+ submitOrderJsonObject.get("orderNumber"));
// 4、查询智能订单是否存在
String orderNum = (String) submitOrderJsonObject.get("orderNumber");
JSONObject queryOrderJsonObject = null;
if (StringUtils.isNotBlank(orderNum)) {
queryOrderJsonObject = getQueryOrderInfo(orderNum, currentTimeStr, 0);
log.info("----------调用查询智能订单接口并返回参数信息:" + queryOrderJsonObject);
/* 5、更新数据库 */
String state = queryOrderJsonObject.getString("state");
// 更新hhr_order
Wrapper<Order> orderWrapper = new EntityWrapper<>();
orderWrapper.eq("kd_order_id", orderNum);
Order updateOrder = new Order();
updateOrder.setOrderId(ORDERSEQ);
updateOrder.setOrderStatus("审核中");
orderMapper.update(updateOrder, orderWrapper);
if (StringUtils.isNotBlank(state)) {
log.info("支付成功后更新订单状态");
OrderView updateOrderView = new OrderView();
updateOrderView.setStatus(QueOrderNum(state));
updateOrderView.setOrderseqThd(orderNum);
Wrapper<OrderView> wrapperOrderView = new EntityWrapper<>();
wrapperOrderView.eq("orderSeq", ORDERSEQ);
orderViewMapper.update(updateOrderView, wrapperOrderView);
log.info("----------将智能订单状态更新至数据库success:" + state);
} else {
log.info("----------将智能订单状态更新至数据库error:" + state);
}
}
} else {
log.info(
"---单宽支付接口推送---"
+ ORDERSEQ
+ "---"
+ UPTRANSEQ
+ "---"
+ ORDERAMOUNT
+ "---"
+ ORDERREQTRANSEQ);
log.info("重复订单");
}
}
private void setPriceIndex(Map<String, Object> schoolMap, Map<String, Object> orderMap, String ORDERAMOUNT) {
try {
// 获取金额下标
if (schoolMap.get("universityMonthlyRentType") != null && orderMap.get("setMealIndex") != null) {
Integer index = 0;
String setMealIndex = orderMap.get("setMealIndex").toString();
if ("".equals(setMealIndex) || !setMealIndex.matches("[0-9]*")) {
if(ORDERAMOUNT.equals("50元")&&orderMap.get("orderSetMeal").equals("20M包月")){
schoolMap.put("universityMonthlyRentType","包月50元");
}
}else {
index = Integer.parseInt(setMealIndex);
String[] university_monthly_rent_type = schoolMap.get("universityMonthlyRentType").toString().split(",");
if (university_monthly_rent_type.length > index) {
schoolMap.put("universityMonthlyRentType", university_monthly_rent_type[index]);
}else {
schoolMap.put("universityMonthlyRentType", university_monthly_rent_type[0]);
}
}
}else{
if(ORDERAMOUNT.equals("50元")&&orderMap.get("order_set_meal").equals("20M包月")){
schoolMap.put("universityMonthlyRentType","包月50元");
}
}
}catch( Exception e) {
log.info(e.toString());
}
}
private JSONObject getQueryOrderInfo(
String orderNum, String currentTimeStr, int count) throws Exception {
List<NameValuePair> qParams = new ArrayList<NameValuePair>();
HttpHost proxy = new HttpHost("172.18.101.170", 3128);
RequestConfig defaultRequestConfig =
RequestConfig.custom()
.setSocketTimeout(50000)
.setConnectTimeout(50000)
.setConnectionRequestTimeout(50000)
.setProxy(proxy)
.build();
CloseableHttpClient httpclient =
HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
HttpEntity entity = null;
HttpPost httpPost = new HttpPost(Constant.ZHANGSHIURL + "query.action");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).build();
httpPost.setConfig(requestConfig);
Map<String, String> signMap = new HashMap<String, String>(); // 待签名参数
qParams.add(new BasicNameValuePair("service", "query.order.status")); // api标识,必填
signMap.put("service", "query.order.status");
qParams.add(new BasicNameValuePair("userName", Constant.ZHENGSHIAUCCON)); // 用户名,必填
signMap.put("userName", Constant.ZHENGSHIAUCCON);
qParams.add(new BasicNameValuePair("timeStamp", currentTimeStr)); // 时间戳(YYYYMMDDHHMMSS) ,必填
signMap.put("timeStamp", currentTimeStr);
qParams.add(new BasicNameValuePair("orderNumber", orderNum)); // 智能平台订单编号,非必填
signMap.put("outOrderNum", orderNum);
// qParams.add(new BasicNameValuePair("outOrderNum","13888888888"));//外部订单编号,非必填
// signMap.put("outOrderNum","13888888888");
List<String> keys = new ArrayList<String>();
keys.addAll(signMap.keySet());
Collections.sort(keys); // key按字符串升序
String value, plaintext = "";
for (String key : keys) {
value = signMap.get(key);
plaintext = plaintext.concat(value);
}
plaintext = plaintext.concat(Constant.ZHANGSHIKEY);
qParams.add(
new BasicNameValuePair(
"sign", SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)))); // 签名,必填
JSONObject resultDataJson = null;
try {
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(new UrlEncodedFormEntity(qParams, "UTF-8"));
log.info("提交参数:" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost);
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
resultDataJson = JSONObject.parseObject(httpResult);
} catch (SSLHandshakeException s) {
count++;
if (count < 20) {
resultDataJson = getQueryOrderInfo(orderNum, currentTimeStr, count);
} else {
log.error("单宽下单接口尝试20次失误。请检查接口");
}
} catch (Exception e) {
log.error("接口异常 " + e.getMessage());
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return resultDataJson;
}
/**
* 获取订单信息
* @param request
* @param schoolMap
* @param orderMap
* @param currentTimeStr
* @param productId
* @param saleId
* @param ORDERSEQ
* @param UPTRANSEQ
* @param ORDERAMOUNT
* @param ORDERREQTRANSEQ
* @param count
* @return
* @throws Exception
*/
private JSONObject getOrderInfo(
Map<String, Object> schoolMap,
Map<String, Object> orderMap,
String currentTimeStr,
String productId,
String saleId,
String ORDERSEQ,
String UPTRANSEQ,
String ORDERAMOUNT,
String ORDERREQTRANSEQ,
int count)
throws Exception {
List<NameValuePair> qParams = new ArrayList<NameValuePair>();
HttpHost proxy = new HttpHost("172.18.101.170", 3128);
RequestConfig defaultRequestConfig =
RequestConfig.custom()
.setSocketTimeout(50000)
.setConnectTimeout(50000)
.setConnectionRequestTimeout(50000)
.setProxy(proxy)
.build();
CloseableHttpClient httpclient =
HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
HttpEntity entity = null;
HttpPost httpPost = new HttpPost(Constant.ZHANGSHIURL + "create-order.action");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).build();
httpPost.setConfig(requestConfig);
Map<String, String> signMap = new HashMap<String, String>(); // 待签名参数
qParams.add(new BasicNameValuePair("service", "order.broadband.create")); // api标识,必填
signMap.put("service", "order.broadband.create"); // api标识,必填
qParams.add(new BasicNameValuePair("userName", Constant.ZHENGSHIAUCCON)); // 用户名,必填
signMap.put("userName", Constant.ZHENGSHIAUCCON);
qParams.add(new BasicNameValuePair("timeStamp", currentTimeStr)); // 时间戳(YYYYMMDDHHMMSS) ,必填
signMap.put("timeStamp", currentTimeStr);
qParams.add(new BasicNameValuePair("productCategory", "单宽带")); // 业务类型 ,必填
signMap.put("productCategory", "单宽带");
qParams.add(new BasicNameValuePair("customerType", "2")); // 客户类型 (1:已有固话,未有宽带 2:未有固话和宽带),必填
signMap.put("customerType", "2");
qParams.add(new BasicNameValuePair("fixedPhoneNum", "")); // 客户类型为1时,固话号码,必填
signMap.put("fixedPhoneNum", "");
qParams.add(new BasicNameValuePair("govEntCustomer", "0")); // 是否政企客户下单 0:否 1:是,必填
signMap.put("govEntCustomer", "0");
qParams.add(new BasicNameValuePair("agentName", "")); // 若是政企客户下单,代办人姓名,必填
signMap.put("agentName", "");
qParams.add(new BasicNameValuePair("agentCardNum", "")); // 若是政企客户下单,代办人身份证号码,必填
signMap.put("agentCardNum", "");
qParams.add(
new BasicNameValuePair("customerName", (String) orderMap.get("orderName"))); // 客户姓名,必填
signMap.put("customerName", (String) orderMap.get("orderName"));
qParams.add(
new BasicNameValuePair("customerPhone", (String) orderMap.get("orderPhone"))); // 客户电话,必填
signMap.put("customerPhone", (String) orderMap.get("orderPhone"));
qParams.add(new BasicNameValuePair("customerCardType", "身份证")); // 证件类型,必填
signMap.put("customerCardType", "身份证");
qParams.add(
new BasicNameValuePair("customerCardNum", (String) orderMap.get("orderNumber"))); // 证件号码,必填
signMap.put("customerCardNum", (String) orderMap.get("orderNumber"));
qParams.add(new BasicNameValuePair("addressProvince", "广东省")); // 报装地址省份,必填
signMap.put("addressProvince", "广东省");
qParams.add(new BasicNameValuePair("addressCity", "广州市")); // 报装地址城市,必填
signMap.put("addressCity", "广州市");
qParams.add(new BasicNameValuePair("deliveryProvince", "广东省")); // 配送地址-省,必填
signMap.put("deliveryProvince", "广东省");
qParams.add(new BasicNameValuePair("deliveryCity", "广州市")); // 配送地址-市,必填
signMap.put("deliveryCity", "广州市");
String addressDistrict = null;
String address = null;
String addressID = null;
String landId = null;
String universityTerminalType = null;
String universityUserCategory = null;
String universityUserType = null;
String universityMonthlyRentType = null;
String universityChargingAttribute = null;
String universityOnlineNumber = null;
String universityOneManTerminal = null;
String universityIsFtthHub = null;
String universityExteriorLines = null;
String universityChargeMode = null;
if (BeanUtil.isNotBlank(schoolMap)) {
addressDistrict = (String) schoolMap.get("universityRegion");
address = (String) schoolMap.get("universityInstalledAddress");
addressID = (String) schoolMap.get("universityInstalledAddressId");
landId = (String) schoolMap.get("universityPackageNumber");
universityTerminalType = (String) schoolMap.get("universityTerminalType");
universityUserCategory = (String) schoolMap.get("universityUserCategory");
universityUserType = (String) schoolMap.get("universityUserType");
universityMonthlyRentType = (String) schoolMap.get("universityMonthlyRentType");
universityChargingAttribute = (String) schoolMap.get("universityChargingAttribute");
universityOnlineNumber = (String) schoolMap.get("universityOnlineNumber");
universityOneManTerminal = (String) schoolMap.get("universityOneManTerminal");
universityIsFtthHub = (String) schoolMap.get("universityIsFtthHub");
universityExteriorLines = (String) schoolMap.get("universityExteriorLines");
universityChargeMode = (String) schoolMap.get("universityChargeMode");
} else {
addressDistrict = "测试区";
address = "广东省广州市测试区测试街道1号";
addressID = "00000";
landId = "20180621";
universityTerminalType = "测试";
universityUserCategory = "测试";
universityUserType = "测试";
universityMonthlyRentType = "测试";
universityChargingAttribute = "测试";
universityOnlineNumber = "0";
universityOneManTerminal = "否";
universityIsFtthHub = "否";
universityExteriorLines = "测试";
universityChargeMode = "测试";
}
qParams.add(new BasicNameValuePair("addressDistrict", addressDistrict)); // 报装地址区域,必填
signMap.put("addressDistrict", addressDistrict);
qParams.add(new BasicNameValuePair("address", address)); // 报装详细地址,必填
signMap.put("address", address);
qParams.add(new BasicNameValuePair("deliveryDistrict", addressDistrict)); // 配送地址-区,必填
signMap.put("deliveryDistrict", addressDistrict);
qParams.add(new BasicNameValuePair("deliveryAddress", address)); // 配送地址-详细地址,必填
signMap.put("deliveryAddress", address);
qParams.add(
new BasicNameValuePair("deliveryContact", (String) orderMap.get("orderName"))); // 报装联系人,必填
signMap.put("deliveryContact", (String) orderMap.get("orderName"));
qParams.add(
new BasicNameValuePair(
"deliveryContactPhone", (String) orderMap.get("orderPhone"))); // 报装联系电话,必填
signMap.put("deliveryContactPhone", (String) orderMap.get("orderPhone"));
qParams.add(new BasicNameValuePair("invoiced", "0")); // 是否需要发票 0:否 1:是,必填
signMap.put("invoiced", "0");
qParams.add(new BasicNameValuePair("invoiceTitle", "")); // 若需要发票,发票抬头,必填
signMap.put("invoiceTitle", "");
qParams.add(new BasicNameValuePair("invoiceDeliveryAddress", "")); // 若需要发票,发票电子邮箱,必填
signMap.put("invoiceDeliveryAddress", "");
qParams.add(new BasicNameValuePair("landId", landId)); // 揽装工号,必填
signMap.put("landId", landId);
qParams.add(new BasicNameValuePair("groupLanId", "")); // 集团揽装工号,选填
signMap.put("groupLanId", "");
qParams.add(new BasicNameValuePair("comarketingLanId", "")); // 协销工号,选填
signMap.put("comarketingLanId", "");
qParams.add(new BasicNameValuePair("groupComarketingLanId", "")); // 集团协销工号,选填
signMap.put("groupComarketingLanId", "");
qParams.add(
new BasicNameValuePair(
"orderOutNum",
(String)
orderMap.get(
"orderSeq"))); // 外部订单编号,选填!;通过API接口下单,必须传入一个外部接入商的订单编号,该编号与智能营销系统编号一一对应
signMap.put("orderOutNum", (String) orderMap.get("orderSeq"));
qParams.add(new BasicNameValuePair("orderSource", "校园宽带自助受理")); // 订单来源 ,选填
signMap.put("orderSource", "校园宽带自助受理");
qParams.add(
new BasicNameValuePair(
"orderSourceNum",
(String) orderMap.get("orderSeq"))); // 订单来源单号,选填; 与订单来源对应,用于业务上记录订单的来源订单编号
signMap.put("orderSourceNum", (String) orderMap.get("orderSeq"));
qParams.add(new BasicNameValuePair("salePointCode", "")); // 销售点编码,选填
signMap.put("salePointCode", "");
qParams.add(new BasicNameValuePair("personCode", "")); // 人员编码,选填
signMap.put("personCode", "");
qParams.add(new BasicNameValuePair("distributorSmsReceive", "")); // 分销商短信接收号码,选填
signMap.put("distributorSmsReceive", "");
qParams.add(new BasicNameValuePair("agent", "")); // 代理商推荐人,选填
signMap.put("agent", "");
qParams.add(new BasicNameValuePair("copyied", "0")); // 是否收取复印件(0:否 1:是),必填
signMap.put("copyied", "0");
qParams.add(
new BasicNameValuePair(
"deliveryContactPhone", (String) orderMap.get("orderPhone"))); // 联系人电话 ,必填
signMap.put("deliveryContactPhone", (String) orderMap.get("orderPhone"));
qParams.add(new BasicNameValuePair("deliveryContactPhone2", "")); // 联系人电话2,选填
signMap.put("deliveryContactPhone2", "");
qParams.add(new BasicNameValuePair("addressId", addressID)); // 地址Id,客户类型为2时,必填
signMap.put("addressId", addressID);
List<Map<String, Object>> productList = new ArrayList<Map<String, Object>>(); // 下单产品列表
List<Map<String, String>> paymentList = new ArrayList<Map<String, String>>(); // 收费项列表
List<Map<String, String>> propertyList = new ArrayList<Map<String, String>>(); // 产品自定义属性列表
// 下单产品
Map<String, Object> productMap = new HashMap<String, Object>();
// 收费项;智能平台3.0产品设计中收费项可由用户自主选择(至少选择一个),可根据需要创建paymentMap对象;注意:每个收费项可独立选择缴费方式
Map<String, String> paymentMap = new HashMap<String, String>();
paymentMap.put("id", saleId); // 收费项ID,必填;请通过销售品列表接口获取
paymentMap.put("payAmount", ORDERAMOUNT); // 缴费金额(打款金额),缴费方式为“代理商打款”或“穗易付”时必填
if (ORDERAMOUNT.equals("0.01") || ORDERAMOUNT.equals("0.02")) {
paymentMap.put("payType", "2");
} else {
paymentMap.put(
"payType", "4"); // 缴费方式,必填(例:payType:1);1:银行划账2:现金支付3:代理商打款4:穗易付5:原套餐缴费方式6:支付宝划扣8:装维上门收取
}
paymentMap.put("tag", ""); // 费用项标识,选填
paymentMap.put(
"bank",
""); // 缴费银行,缴费方式为“银行划账”时必填
// :[中国银行|中国工商银行|中国农业银行|民生银行|招商银行|中信银行|商业银行|广东发展银行|光大银行|华夏银行|兴业银行|浦发银行|广州农村商业银行|广州银行|深圳发展银行|交通银行|中国建设银行|邮政储蓄]
paymentMap.put("bankNumber", ""); // 银行账号,缴费方式为“银行划账”时必填
paymentMap.put("bankOwner", ""); // //银行账号持有人,缴费方式为“银行划账”时必填
String payPlatform = (String) orderMap.get("ipay");
if (StringUtils.isNotBlank(payPlatform)) {
if ("1".equals(payPlatform)) {
paymentMap.put("payPlatform", "支付宝"); // 支付平台,缴费方式为“穗易付”时必填
} else {
paymentMap.put("payPlatform", "微信"); // 支付平台,缴费方式为“穗易付”时必填
}
} else {
paymentMap.put("payPlatform", "穗易付"); // 支付平台,缴费方式为“穗易付”时必填
}
paymentMap.put("electronicPayNumber", UPTRANSEQ); // 支付流水号,缴费方式为“穗易付”时必填
paymentMap.put("payOrderNumber", ORDERREQTRANSEQ); // 穗易付订单号,若选择穗易付,此项必填
paymentMap.put("alipayUserid", ""); // 用户ID,缴费方式为“支付宝支付”时必填
paymentMap.put("alipayNumber", ""); // 支付宝账号,缴费方式为“支付宝支付”时必填
paymentMap.put("alipayAuthNumber", ""); // 授权协议号,缴费方式为“支付宝支付”时必填
paymentList.add(paymentMap);
// 产品自定义属性;暂时默认属性名称只能传“日租卡号码”
Map<String, String> propertyMap = new HashMap<String, String>();
propertyMap.put("name", "宽带速率");
String setMeal = (String) orderMap.get("order_set_meal");
if (StringUtils.isNotBlank(setMeal)) {
setMeal = setMeal.replace("包月", "");
setMeal = setMeal.replace("包年", "");
}
//contains --> equals 原contains识别12M 误入2M
if (setMeal.equals("20M")) {
setMeal = "20M下行速率/4M上行速率";
} else if (setMeal.equals("2M")) {
setMeal = "2M下行速率/512K上行速率";
} else if (setMeal.equals("50M")) {
setMeal = "50M下行速率/10M上行速率";
}
propertyMap.put("value", setMeal);
Map<String, String> propertyMap1 = new HashMap<String, String>();
propertyMap1.put("name", "学校名称");
propertyMap1.put("value", (String) orderMap.get("order_university_name"));
Map<String, String> propertyMap2 = new HashMap<String, String>();
propertyMap2.put("name", "允许上网终端类型");
propertyMap2.put("value", universityTerminalType);
Map<String, String> propertyMap3 = new HashMap<String, String>();
propertyMap3.put("name", "用户类别");
propertyMap3.put("value", universityUserCategory);
Map<String, String> propertyMap4 = new HashMap<String, String>();
propertyMap4.put("name", "用户类型");
propertyMap4.put("value", universityUserType);
Map<String, String> propertyMap5 = new HashMap<String, String>();
propertyMap5.put("name", "月租类型");
propertyMap5.put("name", "月租类型");
propertyMap5.put("value", universityMonthlyRentType);
Map<String, String> propertyMap6 = new HashMap<String, String>();
propertyMap6.put("name", "计费属性");
propertyMap6.put("value", universityChargingAttribute);
Map<String, String> propertyMap7 = new HashMap<String, String>();
propertyMap7.put("name", "一人一号多终端");
propertyMap7.put("value", universityOneManTerminal);
Map<String, String> propertyMap8 = new HashMap<String, String>();
propertyMap8.put("name", "外线方式");
propertyMap8.put("value", universityExteriorLines);
Map<String, String> propertyMap9 = new HashMap<String, String>();
propertyMap9.put("name", "是否FTTH+HUB");
propertyMap9.put("value", universityIsFtthHub);
Map<String, String> propertyMap10 = new HashMap<String, String>();
propertyMap10.put("name", "多媒体账号");
propertyMap10.put("value", (String) orderMap.get("orderCustomerAccount"));
Map<String, String> propertyMap11 = new HashMap<String, String>();
propertyMap11.put("name", "多媒体账号密码");
propertyMap11.put("value", (String) orderMap.get("orderCustomerPwd"));
Map<String, String> propertyMap12 = new HashMap<String, String>();
propertyMap12.put("name", "学生证号");
propertyMap12.put("value", (String) orderMap.get("orderCustomerStudentId"));
Map<String, String> propertyMap13 = new HashMap<String, String>();
propertyMap13.put("name", "宽带首月费用类型");
propertyMap13.put("value", universityChargeMode);
Map<String, String> propertyMap14 = new HashMap<String, String>();
propertyMap14.put("name", "最大在线数");
propertyMap14.put("value", universityOnlineNumber);
Map<String, String> propertyMap15 = new HashMap<String, String>();
propertyMap15.put("name", "地址ID");
propertyMap15.put("value", addressID);
propertyList.add(propertyMap15);
propertyList.add(propertyMap2);
propertyList.add(propertyMap1);
propertyList.add(propertyMap3);
propertyList.add(propertyMap12);
propertyList.add(propertyMap);
propertyList.add(propertyMap4);
propertyList.add(propertyMap5);
propertyList.add(propertyMap6);
propertyList.add(propertyMap10);
propertyList.add(propertyMap11);
propertyList.add(propertyMap14);
propertyList.add(propertyMap7);
propertyList.add(propertyMap9);
propertyList.add(propertyMap8);
propertyList.add(propertyMap13);
productMap.put("productId", productId); // 产品ID,请通过产品列表接口获取
productMap.put("payment", paymentList); // 收费项列表
productMap.put("addProperties", propertyList); // 产品自定义属性列表
productList.add(productMap);
// 将对象装换为json字符串
String productJson = JSONArray.toJSONString(productList);
qParams.add(
new BasicNameValuePair("productJson", URLEncoder.encode(productJson, "UTF-8"))); // 产品信息,必填
signMap.put("productJson", URLEncoder.encode(productJson, "UTF-8"));
List<String> keys = new ArrayList<String>();
keys.addAll(signMap.keySet());
Collections.sort(keys); // key按字符串升序
String value, plaintext = "";
for (String key : keys) {
value = signMap.get(key);
plaintext = plaintext.concat(value);
}
plaintext = plaintext.concat(Constant.ZHANGSHIKEY);
log.info("---------plaintext---------:" + plaintext);
qParams.add(
new BasicNameValuePair(
"sign", SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)))); // 签名,必填
log.info(
"---------sign---------:" + SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)));
JSONObject resultDataJson = null;
try {
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(new UrlEncodedFormEntity(qParams, "UTF-8"));
log.info("提交参数:" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost);
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
log.info("单宽带下单接口,返回信息:" + httpResult);
resultDataJson = JSONObject.parseObject(httpResult);
} catch (SSLHandshakeException s) {
count++;
if (count < 20) {
resultDataJson =
getOrderInfo(
schoolMap,
orderMap,
currentTimeStr,
productId,
saleId,
ORDERSEQ,
UPTRANSEQ,
ORDERAMOUNT,
ORDERREQTRANSEQ,
count);
} else {
log.error("查询单宽带(预付费、移动、融合、续约、增值)产品接口异常尝试20次失误。请检查接口");
}
} catch (Exception e) {
System.out.println("单宽带下单接口异常");
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return resultDataJson;
}
private JSONObject getProductId(String currentTimeStr, int count) throws Exception {
List<NameValuePair> qParams = new ArrayList<NameValuePair>();
Map<String, String> signMap = new HashMap<String, String>(); // 待签名参数
HttpHost proxy = new HttpHost("172.18.101.170", 3128);
RequestConfig defaultRequestConfig =
RequestConfig.custom()
.setSocketTimeout(50000)
.setConnectTimeout(50000)
.setConnectionRequestTimeout(50000)
.setProxy(proxy)
.build();
CloseableHttpClient httpclient =
HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
HttpEntity entity = null;
HttpPost httpPost = new HttpPost(Constant.ZHANGSHIURL + "query.action");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).build();
httpPost.setConfig(requestConfig);
qParams.add(new BasicNameValuePair("service", "product.broadband.query")); // api标识,必填
signMap.put("service", "product.broadband.query");
qParams.add(new BasicNameValuePair("userName", Constant.ZHENGSHIAUCCON)); // 用户名,必填
signMap.put("userName", Constant.ZHENGSHIAUCCON);
qParams.add(new BasicNameValuePair("timeStamp", currentTimeStr)); // 时间戳(YYYYMMDDHHMMSS) ,必填
signMap.put("timeStamp", currentTimeStr);
qParams.add(new BasicNameValuePair("business", "单宽带")); // 产品类型,必填
signMap.put("business", "单宽带");
List<String> keys = new ArrayList<String>();
keys.addAll(signMap.keySet());
Collections.sort(keys); // key按字符串升序
String value, plaintext = "";
for (String key : keys) {
value = signMap.get(key);
plaintext = plaintext.concat(value);
}
plaintext = plaintext.concat(Constant.ZHANGSHIKEY);
qParams.add(
new BasicNameValuePair(
"sign", SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)))); // 签名,必填
JSONObject resultDataJson = null;
try {
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(new UrlEncodedFormEntity(qParams, "UTF-8"));
log.info("提交参数:" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
Constant.trustEveryone();
Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost);
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
resultDataJson = JSONObject.parseObject(httpResult);
} catch (SSLHandshakeException s) {
count++;
if (count < 20) {
resultDataJson = getProductId(currentTimeStr, count);
} else {
log.error("查询单宽带(预付费、移动、融合、续约、增值)产品接口异常尝试20次失误。请检查接口");
}
} catch (Exception e) {
System.out.println("查询单宽带(预付费、移动、融合、续约、增值)产品接口异常");
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return resultDataJson;
}
private String QueOrderNum(String orderNum) {
// TODO Auto-generated method stub
if (orderNum.equals("12")) {
return "1"; // 待提交
} else if (orderNum.equals("11")) {
return "4"; // 归档
} else if (orderNum.equals("13") || orderNum.equals("18")) {
return "5"; // 作废(作废、分销商作废)
} else if (orderNum.equals("9")) {
return "3"; // 受理成功【待收费】
} else if (orderNum.equals("10")) {
return "9"; // 已收费【待竣工】
} else if (orderNum.equals("14")) {
return "10"; // 受理异常
} else {
return "2"; // 待受理(未受理、未受理【待跟进】、待疑难支撑审核、待分局审核、待分销商审核)
}
}
private JSONObject getSaleId(String productId, String currentTimeStr, int count)
throws Exception {
List<NameValuePair> qParams = new ArrayList<NameValuePair>();
Map<String, String> signMap = new HashMap<String, String>(); // 待签名参数
HttpHost proxy = new HttpHost("172.18.101.170", 3128);
RequestConfig defaultRequestConfig =
RequestConfig.custom()
.setSocketTimeout(500000)
.setConnectTimeout(500000)
.setConnectionRequestTimeout(500000)
.setProxy(proxy)
.build();
CloseableHttpClient httpclient =
HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
HttpEntity entity = null;
HttpPost httpPost = new HttpPost(Constant.ZHANGSHIURL + "query.action");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).build();
httpPost.setConfig(requestConfig);
qParams.add(new BasicNameValuePair("service", "sale.query")); // api标识,必填
signMap.put("service", "sale.query");
qParams.add(new BasicNameValuePair("userName", Constant.ZHENGSHIAUCCON)); // 用户名,必填
signMap.put("userName", Constant.ZHENGSHIAUCCON);
qParams.add(new BasicNameValuePair("timeStamp", currentTimeStr));
signMap.put("timeStamp", currentTimeStr);
if (StringUtils.isNotBlank(productId)) {
qParams.add(new BasicNameValuePair("productId", productId)); // 产品ID
signMap.put("productId", productId);
}
List<String> keys = new ArrayList<String>();
keys.addAll(signMap.keySet());
Collections.sort(keys); // key按字符串升序
String value, plaintext = "";
for (String key : keys) {
value = signMap.get(key);
plaintext = plaintext.concat(value);
}
plaintext = plaintext.concat(Constant.ZHANGSHIKEY);
qParams.add(
new BasicNameValuePair(
"sign", SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)))); // 签名,必填
JSONObject resultDataJson = null;
try {
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(new UrlEncodedFormEntity(qParams, "UTF-8"));
log.info("提交参数:" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost);
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
log.info("返回信息:" + httpResult);
resultDataJson = JSONObject.parseObject(httpResult);
} catch (SSLHandshakeException s) {
count++;
if (count < 20) {
resultDataJson = getSaleId(productId, currentTimeStr, count);
} else {
log.error("查询单宽带(预付费、移动、融合、续约、增值)产品接口异常尝试20次失误。请检查接口");
}
} catch (Exception e) {
log.info("---接口异常");
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return resultDataJson;
}
/**
* 融合下单公共方法
* @param order hhr_order 表的map数据
* @param rightNowSend 是否马上下单,是则无视融合时间,不是则判断融合时间是否当天
*/
public void integrateSendOrder(Order order, boolean rightNowSend) throws Exception {
if (order == null) {
log.info("融合下单数据为空!");
return;
}
if (!rightNowSend) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date rhTime = null;
Date date = new Date();
if (order.getRhTime() == null) {
log.info("当前订单无融合时间,无法进行下单:" + JSONObject.toJSONString(order));
return;
}
try {
rhTime = order.getRhTime();
}catch(Exception e) {
log.error("融合日期转换错误" + JSONObject.toJSONString(order));
return;
}
if(rhTime.getTime() <= date.getTime()) {
log.info("融合日期小于当前日期,改为待受理状态" + JSONObject.toJSONString(order));
Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", order.getId());
Order updateOrder = new Order();
updateOrder.setUpdateTime(new Date());
updateOrder.setOrderStatus("待受理");
orderMapper.update(updateOrder, wrapper);
return;
}
}
Map<String, Object> orderMap = null;
Wrapper<OrderView> orderViewWrapper = new EntityWrapper<>();
orderViewWrapper.eq("orderSeq", order.getKdOrderId());
List<Map<String, Object>> orderViewMaps = orderViewMapper.selectMaps(orderViewWrapper);
if (orderViewMaps != null && orderViewMaps.size() > 0) {
orderMap = orderViewMaps.get(0);
}
// 根据学校名称,获取该学校信息
Map<String, Object> schoolMap = new HashMap<>();
List<Map<String, Object>> list1 = new ArrayList<>();
List<Map<String, Object>> hehuoren_id =
universityInfoMapper.selectProductManager(order.getHehuorenId());
if (hehuoren_id.size() > 0 && hehuoren_id.get(0).get("universityId") != null) {
Wrapper<UniversityInfo> universityInfoWrapper = new EntityWrapper<>();
universityInfoWrapper.eq("university_id", hehuoren_id.get(0).get("university_id").toString());
List<Map<String, Object>> findUniversityById = universityInfoMapper.selectMaps(universityInfoWrapper);
schoolMap = findUniversityById.get(0);
} else {
Wrapper<UniversityInfo> universityInfoWrapper = new EntityWrapper<>();
universityInfoWrapper.eq("university_name", orderMap.get("orderUniversityName"));
universityInfoWrapper.eq("university_region", orderMap.get("orderRegion"));
list1 = universityInfoMapper.selectMaps(universityInfoWrapper);
schoolMap = list1.get(0);
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String currentTimeStr = simpleDateFormat.format(new Date());
if (order.getUserType().toString().equals("3")) {
String UPTRANSEQ = "";
if (orderMap.get("uptranseq") != null) {
UPTRANSEQ = orderMap.get("uptranseq").toString();
}
// 穗易付平台,支付流水号
String ORDERAMOUNT = "";
if (orderMap.get("webOrderAmount").toString().equals("0")) {
ORDERAMOUNT = "0元";
} else {
ORDERAMOUNT = orderMap.get("webOrderAmount").toString();
}
setPriceIndex(schoolMap, orderMap, ORDERAMOUNT);
String ORDERREQTRANSEQ = "";
if (orderMap.get("orderReqtranSeq") != null) {
ORDERREQTRANSEQ = orderMap.get("orderReqtranSeq").toString(); // 穗易付订单号
}
String productId = "1329";
String saleId1 = "4907";
// 提速包
String saleId2 = null;
if (!orderMap.get("webOrderAmount").toString().equals("0")) {
JSONObject saleJsonObject = getSaleId(productId, currentTimeStr, 0);
if (saleJsonObject.toString().indexOf("list") == -1) {
return;
}
String prices = orderMap.get("webOrderAmount").toString();
if (prices.equals("0.01")) {
prices = "30";
} else if (prices.equals("0.02")) {
prices = "300";
}
prices = prices.replace(".00", "").replace("元", "") + ".000";
String expenses = "";
if (schoolMap.get("identifying") != null) {
expenses = schoolMap.get("identifying").toString();
}
System.out.println("----expenses---prices---:" + expenses + "------" + prices);
JSONArray saleList = saleJsonObject.getJSONArray("list");
System.out.println("----saleList---:" + saleList);
for (int i = 0; i < saleList.size(); i++) {
net.sf.json.JSONObject itmeJson =
net.sf.json.JSONObject.fromObject(saleList.get(i));
// 判断获取的全部产品与订单产品符合的拿取对应的ID
if (itmeJson.getString("propertyName").indexOf("单宽带") != -1) {
if (itmeJson.getString("price").equals(prices)) {
// 获取对应产品ID
saleId1 = itmeJson.getString("saleId");
}
} else if (itmeJson.getString("propertyName").indexOf("提速包") != -1) {
if (itmeJson.getString("name").equals(expenses)) {
// 获取对应产品ID
saleId2 = itmeJson.getString("saleId");
}
} else if (itmeJson.getString("propertyName").indexOf("增值业务") != -1) {
if (itmeJson.getString("name").equals(expenses)) {
// 获取对应产品ID
saleId2 = itmeJson.getString("saleId");
}
}
}
} else {
JSONObject saleJsonObject =
getSaleId(productId, currentTimeStr, 0); // 获取销售ID
log.info("----------调用智能平台的获取销售品接口返回值:" + saleJsonObject);
System.out.println("----111--" + (saleJsonObject.toString().indexOf("list") == -1));
if (saleJsonObject.toString().indexOf("list") == -1) {
return;
}
String expenses = "";
if (schoolMap.get("identifying") != null) {
expenses = schoolMap.get("identifying").toString();
}
JSONArray saleList = saleJsonObject.getJSONArray("list");
System.out.println("----saleList---:" + saleList);
for (int i = 0; i < saleList.size(); i++) {
net.sf.json.JSONObject itmeJson =
net.sf.json.JSONObject.fromObject(saleList.get(i));
// 判断获取的全部产品与订单产品符合的拿取对应的ID
if (itmeJson.getString("propertyName").indexOf("提速包") != -1) {
if (itmeJson.getString("name").equals(expenses)) {
// 获取对应产品ID
saleId2 = itmeJson.getString("saleId");
}
} else if (itmeJson.getString("propertyName").indexOf("增值业务") != -1) {
if (itmeJson.getString("name").equals(expenses)) {
// 获取对应产品ID
saleId2 = itmeJson.getString("saleId");
}
}
}
}
List<NameValuePair> qParams = new ArrayList<NameValuePair>();
HttpHost proxy = new HttpHost("172.18.101.170", 3128);
RequestConfig defaultRequestConfig =
RequestConfig.custom()
.setSocketTimeout(500000)
.setConnectTimeout(500000)
.setConnectionRequestTimeout(500000)
.setProxy(proxy)
.build();
CloseableHttpClient httpclient =
HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
HttpEntity entity = null;
HttpPost httpPost = new HttpPost(Constant.ZHANGSHIURL + "create-order.action");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).build();
httpPost.setConfig(requestConfig);
Map<String, String> signMap = new HashMap<String, String>();
qParams.add(new BasicNameValuePair("service", "order.combined.create")); // api标识,必填且唯一
signMap.put("service", "order.combined.create");
qParams.add(new BasicNameValuePair("userName", Constant.ZHENGSHIAUCCON)); // 用户名,必填
signMap.put("userName", Constant.ZHENGSHIAUCCON);
qParams.add(
new BasicNameValuePair("timeStamp", currentTimeStr)); // 时间戳(YYYYMMDDHHMMSS) ,必填
signMap.put("timeStamp", currentTimeStr);
qParams.add(new BasicNameValuePair("productCategory", "融合产品")); // 业务类型,必填且唯一
signMap.put("productCategory", "融合产品");
qParams.add(
new BasicNameValuePair("transactType", "新宽旧移")); // 办理类型,必填[新宽新移][新宽旧移][旧宽新移][旧宽旧移]
signMap.put("transactType", "新宽旧移");
if (orderMap.get("webOrderAmount").toString().equals("0")) {
qParams.add(
new BasicNameValuePair(
"ctNumber",
order.getBusinessNumber())); // 电信号码,办理类型,若选择[新宽旧移]或[旧宽旧移],此项必填
signMap.put("ctNumber", order.getBusinessNumber());
} else {
qParams.add(
new BasicNameValuePair(
"ctNumber",
(String)
orderMap.get(
"orderCustomerRemarks"))); // 电信号码,办理类型,若选择[新宽旧移]或[旧宽旧移],此项必填
signMap.put("ctNumber", (String) orderMap.get("orderCustomerRemarks"));
}
qParams.add(
new BasicNameValuePair(
"addressProvince", "广东省")); // 报装地址-省 办理类型,若选择[新宽新移][新宽旧移],此项必填
signMap.put("addressProvince", "广东省");
qParams.add(
new BasicNameValuePair("addressCity", "广州市")); // 报装地址-市 办理类型,若选择[新宽新移][新宽旧移],此项必填
signMap.put("addressCity", "广州市");
String addressDistrict = null;
String address = null;
String addressID = null;
String landId = null;
String universityTerminalType = null;
String universityUserCategory = null;
String universityUserType = null;
String universityMonthlyRentType = null;
String universityChargingAttribute = null;
String universityOnlineNumber = null;
String universityOneManTerminal = null;
String universityIsFtthHub = null;
String universityExteriorLines = null;
String universityChargeMode = null;
if (BeanUtil.isNotBlank(schoolMap)) {
addressDistrict = (String) schoolMap.get("universityRegion");
address = (String) schoolMap.get("universityInstalledAddress");
addressID = (String) schoolMap.get("universityInstalledAddressId");
landId = (String) schoolMap.get("universityPackageNumber");
universityTerminalType = (String) schoolMap.get("universityTerminalType");
universityUserCategory = (String) schoolMap.get("universityUserCategory");
universityUserType = (String) schoolMap.get("universityUserType");
universityMonthlyRentType = (String) schoolMap.get("universityMonthlyRentType");
universityChargingAttribute = (String) schoolMap.get("universityChargingAttribute");
universityOnlineNumber = (String) schoolMap.get("universityOnlineNumber");
universityOneManTerminal = (String) schoolMap.get("universityOneManTerminal");
universityIsFtthHub = (String) schoolMap.get("universityIsFtthHub");
universityExteriorLines = (String) schoolMap.get("universityExteriorLines");
universityChargeMode = (String) schoolMap.get("universityChargeMode");
} else {
addressDistrict = "测试区";
address = "广东省广州市测试区测试街道1号";
addressID = "00000";
landId = "20180621";
universityTerminalType = "测试";
universityUserCategory = "测试";
universityUserType = "测试";
universityMonthlyRentType = "测试";
universityChargingAttribute = "测试";
universityOnlineNumber = "0";
universityOneManTerminal = "否";
universityIsFtthHub = "否";
universityExteriorLines = "测试";
universityChargeMode = "测试";
}
qParams.add(
new BasicNameValuePair(
"addressDistrict", addressDistrict)); // 报装地址-区 办理类型,若选择[新宽新移][新宽旧移],此项必填
signMap.put("addressDistrict", addressDistrict);
qParams.add(
new BasicNameValuePair("address", address)); // 报装地址-详细地址 办理类型,若选择[新宽新移][新宽旧移],此项必填
signMap.put("address", address);
qParams.add(new BasicNameValuePair("addressId", addressID)); // 报装地址-地址ID,选填
signMap.put("addressId", addressID);
qParams.add(new BasicNameValuePair("govEntCustomer", "0")); // 是否政企客户下单 0:否 1:是,必填
signMap.put("govEntCustomer", "0");
qParams.add(new BasicNameValuePair("agentName", "")); // 若是政企客户下单,代办人姓名,必填
signMap.put("agentName", "");
qParams.add(new BasicNameValuePair("agentCardNum", "")); // 若是政企客户下单,代办人身份证号码,必填
signMap.put("agentCardNum", "");
qParams.add(
new BasicNameValuePair(
"customerName", (String) orderMap.get("orderName"))); // 客户姓名,必填
signMap.put("customerName", (String) orderMap.get("orderName"));
qParams.add(
new BasicNameValuePair(
"customerPhone", (String) orderMap.get("orderPhone"))); // 客户电话|代办人电话,必填
signMap.put("customerPhone", (String) orderMap.get("orderPhone"));
qParams.add(new BasicNameValuePair("customerCardType", "身份证")); // 证件类型,必填且只能为身份证
signMap.put("customerCardType", "身份证");
qParams.add(
new BasicNameValuePair(
"customerCardNum", (String) orderMap.get("orderNumber"))); // 证件号码,必填
signMap.put("customerCardNum", (String) orderMap.get("orderNumber"));
qParams.add(new BasicNameValuePair("landId", landId)); // 揽装工号,必填
signMap.put("landId", landId);
qParams.add(new BasicNameValuePair("comarketingLanId", "")); // 协销工号,选填
signMap.put("comarketingLanId", "");
qParams.add(new BasicNameValuePair("groupComarketingLanId", "")); // 集团协销工号,选填
signMap.put("groupComarketingLanId", "");
qParams.add(
new BasicNameValuePair(
"orderOutNum", (String) orderMap.get("orderSeq"))); // 外部订单编号,选填!;
// 通过API接口下单,必须传入一个外部接入商的订单编号,该编号与智能营销系统编号一一对应
signMap.put("orderOutNum", (String) orderMap.get("orderSeq"));
qParams.add(new BasicNameValuePair("orderSource", "校园宽带自助受理")); // 订单来源 ,选填
signMap.put("orderSource", "校园宽带自助受理");
qParams.add(
new BasicNameValuePair(
"orderSourceNum",
(String) orderMap.get("orderSeq"))); // 订单来源单号,选填;与订单来源对应,用于业务上记录订单的来源订单编号
signMap.put("orderSourceNum", (String) orderMap.get("orderSeq"));
qParams.add(new BasicNameValuePair("salePointCode", "")); // 销售点编码,选填
signMap.put("salePointCode", "");
qParams.add(new BasicNameValuePair("personCode", "")); // 人员编码,必填
signMap.put("personCode", "");
qParams.add(new BasicNameValuePair("deliveryProvince", "广东省")); // 配送地址-省,必填
signMap.put("deliveryProvince", "广东省");
qParams.add(new BasicNameValuePair("deliveryCity", "广州市")); // 配送地址-市,必填
signMap.put("deliveryCity", "广州市");
qParams.add(new BasicNameValuePair("deliveryDistrict", addressDistrict)); // 配送地址-区,必填
signMap.put("deliveryDistrict", addressDistrict);
qParams.add(new BasicNameValuePair("deliveryAddress", address)); // 配送地址-详细地址,必填
signMap.put("deliveryAddress", address);
qParams.add(
new BasicNameValuePair(
"deliveryContact", (String) orderMap.get("orderName"))); // 联系人,必填
signMap.put("deliveryContact", (String) orderMap.get("orderName"));
qParams.add(
new BasicNameValuePair(
"deliveryContactPhone", (String) orderMap.get("orderPhone"))); // 联系电话,必填
signMap.put("deliveryContactPhone", (String) orderMap.get("orderPhone"));
qParams.add(new BasicNameValuePair("deliveryContactPhone2", "")); // 联系电话2,选填
signMap.put("deliveryContactPhone2", "");
qParams.add(new BasicNameValuePair("invoiced", "0")); // 是否需要发票,必填
// 0:不需要;1:一次性发票;2:分月发票
signMap.put("invoiced", "0");
qParams.add(new BasicNameValuePair("invoiceTitle", "")); // 发票抬头,若需要发票必填
signMap.put("invoiceTitle", "");
qParams.add(new BasicNameValuePair("invoiceDeliveryAddress", "")); // 电子邮箱,若需要发票必填
signMap.put("invoiceDeliveryAddress", "");
qParams.add(
new BasicNameValuePair("deliveryType", "不需配送")); // 发货类型,必填,填写[同德仓发货][不需配送][代理商自行发货]
signMap.put("deliveryType", "不需配送");
qParams.add(
new BasicNameValuePair(
"deliveryCompany", "")); // 配送公司,选填,同德仓发货必填;填写只能填顺丰速运或者如风达或者京东快递或者EMS
signMap.put("deliveryCompany", "");
qParams.add(new BasicNameValuePair("gift", "")); // 礼品,选填,请通过礼品列表接口获取
signMap.put("gift", "");
qParams.add(new BasicNameValuePair("giftNum", "")); // 礼品数量,选填,若礼品填写则必填且为正整数
signMap.put("giftNum", "");
qParams.add(new BasicNameValuePair("acceptPriority", "7")); // 受理优先级 为0-10范围内的整数! 选填
signMap.put("acceptPriority", "7");
List<Map<String, Object>> productList = new ArrayList<Map<String, Object>>(); // 产品信息
List<Map<String, Object>> inPropertyList = new ArrayList<Map<String, Object>>(); // 产品属性
List<Map<String, Object>> paymentList =
new ArrayList<Map<String, Object>>(); // 销售品信息(费用项)
List<Map<String, Object>> addPropertyList =
new ArrayList<Map<String, Object>>(); // 自定义产品属性
// 下单产品
Map<String, Object> productMap = new HashMap<String, Object>();
// 产品(一个订单只能有一种产品且数量为1)
productMap.put("productId", productId); // 产品id,必填,请通过产品列表接口获取
// 产品都必须传一个产品对应的唯一的收费项
Map<String, Object> paymentListMap = new HashMap<String, Object>();
paymentListMap.put("id", "4455"); // 收费项ID,选填;请通过销售品列表接口获取,若不填表示终端补收款
paymentListMap.put("saleName", "校园融合套餐"); // 销售品名称,选填,若id不填写此项必填写,且只能为终端补收款
paymentListMap.put("payType", "2"); // 缴费方式,
// 必填(例:payType:3)1:银行划账2:现金支付3:代理商打款4:穗易付6:支付宝划扣7:货到付款8:装维上门收取9:第三方托收11:代理商代扣
// 单宽带
Map<String, Object> paymentListMap2 = new HashMap<String, Object>();
paymentListMap2.put("id", saleId1); // 收费项ID,选填;请通过销售品列表接口获取,若不填表示终端补收款
paymentListMap2.put("saleName", ""); // 销售品名称,选填,若id不填写此项必填写,且只能为终端补收款
paymentListMap2.put("payAmount", ORDERAMOUNT); // 打款金额(支付金额),若选择代理商打款、者穗易付、货到付款,此项必填
if (orderMap.get("webOrderAmount").toString().equals("0")
|| ORDERAMOUNT.equals("0.01")
|| ORDERAMOUNT.equals("0.02")) {
paymentListMap2.put("payType", "2");
} else if (orderMap.get("customeRid").toString().equals("xjzf")) {
paymentListMap2.put("payType", "2");
} else {
paymentListMap2.put("payType", "4"); // 缴费方式,必填(例:payType:3)3:代理商打款4:穗易付7:货到付款
}
String payPlatform = (String) orderMap.get("ipay");
if (StringUtils.isNotBlank(payPlatform)) {
if ("1".equals(payPlatform)) {
paymentListMap2.put("payPlatform", "支付宝"); // 支付平台,缴费方式为“穗易付”时必填
} else {
paymentListMap2.put("payPlatform", "微信"); // 支付平台,缴费方式为“穗易付”时必填
}
} else {
paymentListMap2.put("payPlatform", "穗易付"); // 支付平台,缴费方式为“穗易付”时必填
}
paymentListMap2.put("electronicPayNumber", UPTRANSEQ); // 支付流水号,若选择穗易付,此项必填
paymentListMap2.put("payOrderNumber", ORDERREQTRANSEQ); // 穗易付订单号,若选择穗易付,此项必填
// 提速包
Map<String, Object> paymentListMap3 = new HashMap<String, Object>();
paymentListMap3.put("id", saleId2); // 收费项ID,选填;请通过销售品列表接口获取,若不填表示终端补收款
paymentListMap3.put("saleName", ""); // 销售品名称,选填,若id不填写此项必填写,且只能为终端补收款
paymentListMap3.put("saleAmount", ""); // 售价,选填
paymentListMap3.put("payType", "2"); // 缴费方式,必填(例:payType:3)3:代理商打款4:穗易付7:货到付款
paymentListMap3.put("payAmount", "0"); // 打款金额(支付金额),若选择代理商打款、者穗易付、货到付款,此项必填
paymentList.add(paymentListMap);
paymentList.add(paymentListMap2);
if(StringUtils.isNotBlank(saleId2)){
paymentList.add(paymentListMap3);
}
productMap.put("payment", paymentList);
// 产品属性 必填主卡号码属性,name=主卡号码,value=11位数字或者随机;
Map<String, Object> inPropertyListMap = new HashMap<String, Object>();
inPropertyListMap.put("name", "主卡号码");
if (orderMap.get("webOrderAmount").toString().equals("0")) {
inPropertyListMap.put("value", order.getBusinessNumber());
} else {
inPropertyListMap.put("value", orderMap.get("orderCustomerRemarks"));
}
inPropertyList.add(inPropertyListMap);
productMap.put("inpProperties", inPropertyList);
// 产品附加扩展属性 选填(若有购买终端,请填写在此:name:终端型号1;value:终端值)
// Map<String, Object> appendPropertyListMap1 = new HashMap<String, Object>();
// appendPropertyListMap1.put("name", "终端型号1");
// appendPropertyListMap1.put("value", "华为荣耀5A全网通白色");
// appendPropertyList.add(appendPropertyListMap1);
// Map<String, Object> appendPropertyListMap2 = new HashMap<String, Object>();
// appendPropertyListMap2.put("name", "终端型号2");
// appendPropertyListMap2.put("value", "华为P9全网通32G金色");
// appendPropertyList.add(appendPropertyListMap2);
// Map<String, Object> appendPropertyListMap3 = new HashMap<String, Object>();
// appendPropertyListMap3.put("name", "终端型号3");
// appendPropertyListMap3.put("value", "华为P9全网通32G金色");
// appendPropertyList.add(appendPropertyListMap3);
//
// productMap.put("appendProperties", appendPropertyList);
// 产品自定义属性;选填,没有则为null
// 注:若填写请属性名和属性值都填写,若只填写其中一项则无效
// 产品自定义属性;暂时默认属性名称只能传“日租卡号码”
Map<String, Object> propertyMap = new HashMap<String, Object>();
propertyMap.put("name", "宽带速率");
String setMeal = (String) schoolMap.get("speed");
if (StringUtils.isNotBlank(setMeal)) {
setMeal = setMeal.replace("包月", "");
setMeal = setMeal.replace("包年", "");
}
propertyMap.put("value", setMeal);
Map<String, Object> propertyMap1 = new HashMap<String, Object>();
propertyMap1.put("name", "学校名称");
propertyMap1.put("value", (String) orderMap.get("orderUniversityName"));
Map<String, Object> propertyMap2 = new HashMap<String, Object>();
propertyMap2.put("name", "允许上网终端类型");
propertyMap2.put("value", universityTerminalType);
Map<String, Object> propertyMap3 = new HashMap<String, Object>();
propertyMap3.put("name", "用户类别");
propertyMap3.put("value", universityUserCategory);
Map<String, Object> propertyMap4 = new HashMap<String, Object>();
propertyMap4.put("name", "用户类型");
propertyMap4.put("value", universityUserType);
Map<String, Object> propertyMap5 = new HashMap<String, Object>();
propertyMap5.put("name", "月租类型");
propertyMap5.put("value", universityMonthlyRentType);
Map<String, Object> propertyMap6 = new HashMap<String, Object>();
propertyMap6.put("name", "计费属性");
propertyMap6.put("value", universityChargingAttribute);
Map<String, Object> propertyMap7 = new HashMap<String, Object>();
propertyMap7.put("name", "一人一号多终端");
propertyMap7.put("value", universityOneManTerminal);
Map<String, Object> propertyMap8 = new HashMap<String, Object>();
propertyMap8.put("name", "外线方式");
propertyMap8.put("value", universityExteriorLines);
Map<String, Object> propertyMap9 = new HashMap<String, Object>();
propertyMap9.put("name", "是否FTTH+HUB");
propertyMap9.put("value", universityIsFtthHub);
Map<String, Object> propertyMap16 = new HashMap<String, Object>();
propertyMap16.put("name", "宽带提速速率");
propertyMap16.put("value", schoolMap.get("expenses"));
Map<String, Object> propertyMap10 = new HashMap<String, Object>();
propertyMap10.put("name", "多媒体账号");
propertyMap10.put("value", (String) orderMap.get("orderCustomerAccount"));
Map<String, Object> propertyMap11 = new HashMap<String, Object>();
propertyMap11.put("name", "多媒体账号密码");
propertyMap11.put("value", (String) orderMap.get("orderCustomerPwd"));
Map<String, Object> propertyMap12 = new HashMap<String, Object>();
propertyMap12.put("name", "学生证号");
propertyMap12.put("value", (String) orderMap.get("order_customerStudentId"));
Map<String, Object> propertyMap13 = new HashMap<String, Object>();
propertyMap13.put("name", "宽带首月费用类型");
propertyMap13.put("value", universityChargeMode);
Map<String, Object> propertyMap14 = new HashMap<String, Object>();
propertyMap14.put("name", "最大在线数");
propertyMap14.put("value", universityOnlineNumber);
Map<String, Object> propertyMap15 = new HashMap<String, Object>();
propertyMap15.put("name", "地址ID");
propertyMap15.put("value", addressID);
Map<String, Object> propertyMap17 = new HashMap<String, Object>();
propertyMap17.put("name", "关联移动号码");
if (orderMap.get("webOrderAmount").toString().equals("0")) {
propertyMap17.put("value", order.getBusinessNumber());
} else {
propertyMap17.put("value", orderMap.get("order_customer_remarks"));
}
addPropertyList.add(propertyMap15);
addPropertyList.add(propertyMap2);
addPropertyList.add(propertyMap1);
addPropertyList.add(propertyMap3);
addPropertyList.add(propertyMap12);
addPropertyList.add(propertyMap);
addPropertyList.add(propertyMap16);
addPropertyList.add(propertyMap4);
addPropertyList.add(propertyMap17);
addPropertyList.add(propertyMap5);
addPropertyList.add(propertyMap6);
addPropertyList.add(propertyMap10);
addPropertyList.add(propertyMap11);
addPropertyList.add(propertyMap14);
addPropertyList.add(propertyMap7);
addPropertyList.add(propertyMap9);
addPropertyList.add(propertyMap8);
addPropertyList.add(propertyMap13);
productMap.put("addProperties", addPropertyList);
productList.add(productMap);
// 将对象装换为json字符串
String productJson = net.sf.json.JSONArray.fromObject(productList).toString();
try {
qParams.add(
new BasicNameValuePair(
"productJson", URLEncoder.encode(productJson, "UTF-8"))); // 产品信息,必填
signMap.put("productJson", URLEncoder.encode(productJson, "UTF-8"));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
List<String> keys = new ArrayList<String>();
keys.addAll(signMap.keySet());
Collections.sort(keys); // key按字符串升序
String value, plaintext = "";
for (String key : keys) {
value = signMap.get(key);
plaintext = plaintext.concat(value);
}
plaintext = plaintext.concat(Constant.ZHANGSHIKEY);
log.info("---------plaintext---------:" + plaintext);
qParams.add(
new BasicNameValuePair(
"sign", SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)))); // 签名,必填
log.info(
"---------sign---------:"
+ SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)));
net.sf.json.JSONObject resultDataJson = null;
try {
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(new UrlEncodedFormEntity(qParams, "UTF-8"));
log.info("提交参数:" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost);
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
log.info("订单编号:" + order.getKdOrderId() +";融合下单接口,返回信息:" + httpResult);
resultDataJson = net.sf.json.JSONObject.fromObject(httpResult);
} catch (SSLHandshakeException s) {
HttpResponse response = httpclient.execute(httpPost);
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
log.info("订单编号:" + order.getKdOrderId()+";融合下单接口,返回信息:" + httpResult);
resultDataJson = net.sf.json.JSONObject.fromObject(httpResult);
} catch (Exception e) {
System.out.println("融合下单接口接口异常");
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
String orderNum = (String) resultDataJson.get("orderNumber");
JSONObject queryOrderJsonObject = null;
if (StringUtils.isNotBlank(orderNum)) {
queryOrderJsonObject = getQueryOrderInfo(orderNum, currentTimeStr, 0);
log.info("----------调用查询智能订单接口并返回参数信息:" + queryOrderJsonObject);
/* 5、更新数据库 */
String state = queryOrderJsonObject.getString("state");
Wrapper<Order> orderWrapper = new EntityWrapper<>();
orderWrapper.eq("kd_order_id", orderNum);
Order updateOrder = new Order();
updateOrder.setOrderId(orderMap.get("orderSeq").toString());
updateOrder.setOrderStatus("审核中");
orderMapper.update(updateOrder, orderWrapper);
if (StringUtils.isNotBlank(state)) {
log.info("支付成功后更新订单状态");
OrderView updateOrderView = new OrderView();
updateOrderView.setStatus(QueOrderNum(state));
updateOrderView.setOrderseqThd(orderNum);
Wrapper<OrderView> wrapperOrderView = new EntityWrapper<>();
wrapperOrderView.eq("orderSeq", orderMap.get("orderSeq").toString());
orderViewMapper.update(updateOrderView, wrapperOrderView);
} else {
log.info("----------将智能订单状态更新至数据库error:" + state);
}
} else {
String msg = (String) resultDataJson.get("msg");
if (StringUtils.isNotBlank(msg) && !msg.equals("订单来源单号已存在,请勿重复下单")) {
Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", order.getId());
Order updateOrder = new Order();
updateOrder.setOrderStatus("异常单");
updateOrder.setMsg(msg);
orderMapper.update(updateOrder, wrapper);
}
}
} else if (order.getUserType().toString().equals("10")) {
String productId = "1329"; // 产品id
String saleId = null; // 销售id
JSONObject saleJsonObject =
getSaleId(productId, currentTimeStr, 0); // 获取销售ID
log.info("----------调用智能平台的获取销售品接口返回值:" + saleJsonObject);
String expenses = null;
if (schoolMap.get("identifying") != null) {
expenses = schoolMap.get("identifying").toString();
}
JSONArray saleList = saleJsonObject.getJSONArray("list");
System.out.println("----saleList---:" + saleList);
for (int i = 0; i < saleList.size(); i++) {
net.sf.json.JSONObject itmeJson = net.sf.json.JSONObject.fromObject(saleList.get(i));
// 判断获取的全部产品与订单产品符合的拿取对应的ID
if (itmeJson.getString("propertyName").indexOf("提速包") != -1) {
if (itmeJson.getString("name").equals(expenses)) {
// 获取对应产品ID
saleId = itmeJson.getString("saleId");
}
} else if (itmeJson.getString("propertyName").indexOf("增值业务") != -1) {
if (itmeJson.getString("name").equals(expenses)) {
// 获取对应产品ID
saleId = itmeJson.getString("saleId");
}
}
}
// 3、提交订单到智能平台
List<NameValuePair> qParams = new ArrayList<NameValuePair>();
HttpHost proxy = new HttpHost("172.18.101.170", 3128);
RequestConfig defaultRequestConfig =
RequestConfig.custom()
.setSocketTimeout(500000)
.setConnectTimeout(500000)
.setConnectionRequestTimeout(500000)
.setProxy(proxy)
.build();
CloseableHttpClient httpclient =
HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
HttpEntity entity = null;
// https://ismart.mini189.cn/api/create-order.action
HttpPost httpPost = new HttpPost(Constant.ZHANGSHIURL + "create-order.action");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).build();
httpPost.setConfig(requestConfig);
Map<String, String> signMap = new HashMap<String, String>();
qParams.add(new BasicNameValuePair("service", "order.combined.create")); // api标识,必填且唯一
signMap.put("service", "order.combined.create");
qParams.add(new BasicNameValuePair("userName", Constant.ZHENGSHIAUCCON)); // 用户名,必填
signMap.put("userName", Constant.ZHENGSHIAUCCON);
qParams.add(
new BasicNameValuePair("timeStamp", currentTimeStr)); // 时间戳(YYYYMMDDHHMMSS) ,必填
signMap.put("timeStamp", currentTimeStr);
qParams.add(new BasicNameValuePair("productCategory", "融合产品")); // 业务类型,必填且唯一
signMap.put("productCategory", "融合产品");
qParams.add(
new BasicNameValuePair("transactType", "旧宽旧移")); // 办理类型,必填[新宽新移][新宽旧移][旧宽新移][旧宽旧移]
signMap.put("transactType", "旧宽旧移");
qParams.add(
new BasicNameValuePair(
"broadbandAccess",
order.getDmtNumber())); // 宽带接入号,办理类型,若选择[旧宽新移]或[旧宽旧移],此项必填
signMap.put("broadbandAccess", order.getDmtNumber());
qParams.add(
new BasicNameValuePair(
"ctNumber",
order.getBusinessNumber())); // 电信号码,办理类型,若选择[新宽旧移]或[旧宽旧移],此项必填
signMap.put("ctNumber", order.getBusinessNumber());
String addressID = null;
String landId = null;
if (BeanUtil.isNotBlank(schoolMap)) {
addressID = (String) schoolMap.get("universityInstalledAddressId");
landId = (String) schoolMap.get("universityPackageNumber");
} else {
addressID = "00000";
landId = "20180621";
}
qParams.add(new BasicNameValuePair("addressId", addressID)); // 报装地址-地址ID,选填
signMap.put("addressId", addressID);
qParams.add(new BasicNameValuePair("govEntCustomer", "0")); // 是否政企客户下单 0:否 1:是,必填
signMap.put("govEntCustomer", "0");
qParams.add(new BasicNameValuePair("agentName", "")); // 若是政企客户下单,代办人姓名,必填
signMap.put("agentName", "");
qParams.add(new BasicNameValuePair("agentCardNum", "")); // 若是政企客户下单,代办人身份证号码,必填
signMap.put("agentCardNum", "");
qParams.add(
new BasicNameValuePair(
"customerName", order.getCustomerName())); // 客户姓名,必填
signMap.put("customerName", order.getCustomerName());
qParams.add(
new BasicNameValuePair(
"customerPhone", order.getContactNumber())); // 客户电话|代办人电话,必填
signMap.put("customerPhone", order.getContactNumber());
qParams.add(new BasicNameValuePair("customerCardType", "身份证")); // 证件类型,必填且只能为身份证
signMap.put("customerCardType", "身份证");
qParams.add(
new BasicNameValuePair(
"customerCardNum", order.getIdCard())); // 证件号码,必填
signMap.put("customerCardNum", order.getIdCard());
qParams.add(new BasicNameValuePair("landId", landId)); // 揽装工号,必填
signMap.put("landId", landId);
qParams.add(new BasicNameValuePair("comarketingLanId", "")); // 协销工号,选填
signMap.put("comarketingLanId", "");
qParams.add(new BasicNameValuePair("groupComarketingLanId", "")); // 集团协销工号,选填
signMap.put("groupComarketingLanId", "");
qParams.add(
new BasicNameValuePair(
"orderOutNum", order.getKdOrderId())); // 外部订单编号,选填!;
// 通过API接口下单,必须传入一个外部接入商的订单编号,该编号与智能营销系统编号一一对应
signMap.put("orderOutNum", order.getKdOrderId());
qParams.add(new BasicNameValuePair("orderSource", "校园宽带自助受理")); // 订单来源 ,选填
signMap.put("orderSource", "校园宽带自助受理");
qParams.add(
new BasicNameValuePair(
"orderSourceNum",
order.getKdOrderId())); // 订单来源单号,选填;与订单来源对应,用于业务上记录订单的来源订单编号
signMap.put("orderSourceNum", order.getKdOrderId());
qParams.add(new BasicNameValuePair("salePointCode", "")); // 销售点编码,选填
signMap.put("salePointCode", "");
qParams.add(new BasicNameValuePair("personCode", "")); // 人员编码,必填
signMap.put("personCode", "");
qParams.add(
new BasicNameValuePair(
"deliveryContact", order.getCustomerName())); // 联系人,必填
signMap.put("deliveryContact", order.getCustomerName());
qParams.add(
new BasicNameValuePair(
"deliveryContactPhone", order.getContactNumber())); // 联系电话,必填
signMap.put("deliveryContactPhone", order.getContactNumber());
qParams.add(new BasicNameValuePair("deliveryContactPhone2", "")); // 联系电话2,选填
signMap.put("deliveryContactPhone2", "");
qParams.add(new BasicNameValuePair("invoiced", "0")); // 是否需要发票,必填
// 0:不需要;1:一次性发票;2:分月发票
signMap.put("invoiced", "0");
qParams.add(new BasicNameValuePair("invoiceTitle", "")); // 发票抬头,若需要发票必填
signMap.put("invoiceTitle", "");
qParams.add(new BasicNameValuePair("invoiceDeliveryAddress", "")); // 电子邮箱,若需要发票必填
signMap.put("invoiceDeliveryAddress", "");
qParams.add(
new BasicNameValuePair("deliveryType", "不需配送")); // 发货类型,必填,填写[同德仓发货][不需配送][代理商自行发货]
signMap.put("deliveryType", "不需配送");
qParams.add(
new BasicNameValuePair(
"deliveryCompany", "")); // 配送公司,选填,同德仓发货必填;填写只能填顺丰速运或者如风达或者京东快递或者EMS
signMap.put("deliveryCompany", "");
qParams.add(new BasicNameValuePair("gift", "")); // 礼品,选填,请通过礼品列表接口获取
signMap.put("gift", "");
qParams.add(new BasicNameValuePair("giftNum", "")); // 礼品数量,选填,若礼品填写则必填且为正整数
signMap.put("giftNum", "");
qParams.add(new BasicNameValuePair("acceptPriority", "7")); // 受理优先级 为0-10范围内的整数! 选填
signMap.put("acceptPriority", "7");
List<Map<String, Object>> productList = new ArrayList<Map<String, Object>>(); // 产品信息
List<Map<String, Object>> paymentList =
new ArrayList<Map<String, Object>>(); // 销售品信息(费用项)
List<Map<String, Object>> addPropertyList =
new ArrayList<Map<String, Object>>(); // 自定义产品属性
// 下单产品
Map<String, Object> productMap = new HashMap<String, Object>();
// 产品(一个订单只能有一种产品且数量为1)
productMap.put("productId", productId); // 产品id,必填,请通过产品列表接口获取
//
//// 产品都必须传一个产品对应的唯一的收费项
Map<String, Object> paymentListMap = new HashMap<String, Object>();
paymentListMap.put("id", "4455"); // 收费项ID,选填;请通过销售品列表接口获取,若不填表示终端补收款
paymentListMap.put("saleName", "校园融合套餐"); // 销售品名称,选填,若id不填写此项必填写,且只能为终端补收款
paymentListMap.put("payType", "2"); // 缴费方式,
// 必填(例:payType:3)1:银行划账2:现金支付3:代理商打款4:穗易付6:支付宝划扣7:货到付款8:装维上门收取9:第三方托收11:代理商代扣
//单宽带
Map<String, Object> paymentListMap2 = new HashMap<String, Object>();
paymentListMap2.put("id", saleId); // 收费项ID,选填;请通过销售品列表接口获取,若不填表示终端补收款
paymentListMap2.put("saleName", ""); // 销售品名称,选填,若id不填写此项必填写,且只能为终端补收款
paymentListMap2.put("payType", "2");
paymentListMap2.put("saleAmount", "");
paymentListMap2.put("payAmount", "0");
paymentList.add(paymentListMap);
paymentList.add(paymentListMap2);
productMap.put("payment", paymentList);
Map<String, Object> propertyMap1 = new HashMap<String, Object>();
propertyMap1.put("name", "学校名称");
propertyMap1.put("value", (String) orderMap.get("orderUniversityName"));
Map<String, Object> propertyMap17 = new HashMap<String, Object>();
propertyMap17.put("name", "关联移动号码");
propertyMap17.put("value", order.getBusinessNumber());
Map<String, Object> propertyMap18 = new HashMap<String, Object>();
propertyMap18.put("name", "宽带接入号");
propertyMap18.put("value", order.getDmtNumber());
Map<String, Object> propertyMap16 = new HashMap<String, Object>();
propertyMap16.put("name", "宽带提速速率");
propertyMap16.put("value", schoolMap.get("expenses"));
addPropertyList.add(propertyMap1);
addPropertyList.add(propertyMap17);
addPropertyList.add(propertyMap18);
addPropertyList.add(propertyMap16);
productMap.put("addProperties", addPropertyList);
productList.add(productMap);
// 将对象装换为json字符串
String productJson = net.sf.json.JSONArray.fromObject(productList).toString();
try {
qParams.add(
new BasicNameValuePair(
"productJson", URLEncoder.encode(productJson, "UTF-8"))); // 产品信息,必填
signMap.put("productJson", URLEncoder.encode(productJson, "UTF-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
List<String> keys = new ArrayList<String>();
keys.addAll(signMap.keySet());
Collections.sort(keys); // key按字符串升序
String value, plaintext = "";
for (String key : keys) {
value = signMap.get(key);
plaintext = plaintext.concat(value);
}
plaintext = plaintext.concat(Constant.ZHANGSHIKEY);
qParams.add(
new BasicNameValuePair(
"sign", SignUtil.exChange(SignUtil.md5EncodeSignature(plaintext)))); // 签名,必填
net.sf.json.JSONObject resultDataJson = null;
try {
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(new UrlEncodedFormEntity(qParams, "UTF-8"));
log.info("提交参数:" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost);
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
log.info("宽叠移定时器下单接口,返回信息:" + httpResult);
resultDataJson = net.sf.json.JSONObject.fromObject(httpResult);
} catch (SSLHandshakeException s) {
HttpResponse response = httpclient.execute(httpPost);
entity = response.getEntity();
String httpResult = EntityUtils.toString(entity, "UTF-8");
log.info("宽叠移下单接口,返回信息:" + httpResult);
resultDataJson = net.sf.json.JSONObject.fromObject(httpResult);
} catch (Exception e) {
System.out.println("宽叠移下单接口异常");
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
String orderNum = (String) resultDataJson.get("orderNumber");
net.sf.json.JSONObject queryOrderJsonObject = null;
if (StringUtils.isNotBlank(orderNum)) {
/* 5、更新数据库 */
Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", order.getId());
Order updateOrder = new Order();
updateOrder.setOrderStatus("审核中");
updateOrder.setOrderId(orderNum);
orderMapper.update(updateOrder, wrapper);
OrderHistory orderHistory = new OrderHistory();
orderHistory.setOrderId(order.getId());
orderHistory.setCreateDate(new Date());
orderHistory.setStatus("智能平台下单成功" + orderNum);
orderHistoryMapper.insert(orderHistory);
} else {
String msg = (String) resultDataJson.get("msg");
if (StringUtils.isNotBlank(msg)&& !msg.equals("订单来源单号已存在,请勿重复下单")) {
Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", order.getId());
Order updateOrder = new Order();
updateOrder.setOrderStatus("异常单");
updateOrder.setMsg(msg);
orderMapper.update(updateOrder, wrapper);
}
OrderHistory orderHistory = new OrderHistory();
orderHistory.setOrderId(order.getId());
orderHistory.setCreateDate(new Date());
orderHistory.setStatus("智能平台下单失败" + orderNum);
orderHistoryMapper.insert(orderHistory);
}
}
}
}
...@@ -64,4 +64,39 @@ ...@@ -64,4 +64,39 @@
</where> </where>
) c ) c
</select> </select>
<select id="getProductByUserId" parameterType="String" resultType="HashMap">
select
hs.jilt_kdy, hs.school_name,hs.bandproduct_id
from
hhr_user_school hus
left join
hhr_school hs on hus.school_id = hs.id
where user_id = #{hehuorenId}
</select>
<select id="selectSupervisor" parameterType="String" resultType="HashMap">
select uuu.name ddname,sch.lzgh
from hhr_user u
left join hhr_user_school us on u.id = us.user_id
left join hhr_school sch on sch.id = us.school_id
left join hhr_supervisor_school ss on us.school_id = ss.school
left join sys_user uuu on uuu.id = ss.user_id
where u.id= #{hehuorenId}
</select>
<select id="selectHehuorenInfo" parameterType="String" resultType="HashMap">
SELECT
su.phone,
su.name,
hs.sub_name,
hs.school_name
FROM
sys_user su
LEFT JOIN hhr_user hu ON su.id = hu.id
LEFT JOIN hhr_user_school hus ON su.id = hus.user_id
LEFT JOIN hhr_school hs ON hus.school_id = hs.id
WHERE
su.id = #{hehuorenId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -164,4 +164,16 @@ ...@@ -164,4 +164,16 @@
select * from hhr_order where order_number = #{orderNumber} select * from hhr_order where order_number = #{orderNumber}
</select> </select>
<select id="selectRepeatOrder" parameterType="String" resultType="com.winsun.bean.Order">
select * from hhr_order where user_type in('3','5','9','10') and order_status !='异常单' and id_card=#{idCard}
</select>
<select id="selectBroadList" parameterType="String" resultType="HashMap">
select * from hhr_kd_dmt where account_number = #{accountNumber}
</select>
<update id="updateCompleteOrder">
UPDATE hhr_order SET order_status = '已完成' WHERE id IN (SELECT id FROM(SELECT id FROM hhr_order WHERE order_status='已发货' AND TO_DAYS(NOW()) - TO_DAYS(create_time) > 7) t1)
</update>
</mapper> </mapper>
\ No newline at end of file
...@@ -27,4 +27,8 @@ ...@@ -27,4 +27,8 @@
group by ui.university_id group by ui.university_id
</select> </select>
<select id="selectProductManager" parameterType="String" resultType="HashMap">
SELECT * FROM `product_manage` WHERE product_id = (SELECT b.`bandproduct_id` FROM hhr_user_school a LEFT JOIN hhr_school b ON a.`school_id`=b.`id` WHERE a.user_id=#{id})
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -35,13 +35,22 @@ public class OrderTask { ...@@ -35,13 +35,22 @@ public class OrderTask {
OrderTask.orderMapper = orderMapper; OrderTask.orderMapper = orderMapper;
} }
// TODO 定时器更新已送货订单 /**
* 定时器更新已送货订单
*/
@Scheduled(cron = "0 0/5 * * * ? ")
public void updateBeSendOrder() {
log.info("开始更新已发货超过7天订单");
orderMapper.updateCompleteOrder();
log.info("更新已送货订单");
}
@Scheduled(cron = "0 0 0 * * ? ") @Scheduled(cron = "0 0 0 * * ? ")
//@Scheduled(cron = "0/5 * * * * ? ") //@Scheduled(cron = "0/5 * * * * ? ")
//@Scheduled(fixedRate=1000*60) //@Scheduled(fixedRate=1000*60)
@PostMapping("/orderTask") @PostMapping("/orderTask")
public void general() throws ParseException { public void general() throws ParseException {
log.info("更新小白卡订单");
Wrapper<Order> wrapper = new EntityWrapper(); Wrapper<Order> wrapper = new EntityWrapper();
wrapper.eq("order_status", "待识别"); wrapper.eq("order_status", "待识别");
List<Order> orders = orderMapper.selectList(wrapper); List<Order> orders = orderMapper.selectList(wrapper);
......
...@@ -628,9 +628,9 @@ public class RhZhiNenTask { ...@@ -628,9 +628,9 @@ public class RhZhiNenTask {
} }
} }
}
} }
}
private String QueOrderNum(String orderNum) { private String QueOrderNum(String orderNum) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
......
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