Commit 928e51f8 by 陈浩建

Merge remote-tracking branch 'origin/master'

parents ab6048a5 68e6d997
......@@ -426,6 +426,12 @@ public class RongHeController {
String ipay = request.getParameter("ipay");
String userId = request.getParameter("userId");
String rhTime = request.getParameter("rhTime");
// 参数校验
if (StringUtils.isBlank(orderSeq) || StringUtils.isBlank(ipay)) {
return ResponseData.error("参数有误,请重新进入下单页面进行支付");
}
try {
boolean boo1 = redisLockUtil.redisLock(orderSeq,uuid,10);
if(!boo1){
......
......@@ -143,7 +143,7 @@ public interface OrderMapper extends BaseMapper<Order> {
* 更新未下单并且融合时间小于当前时间的订单
* @return
*/
int updateNosendAndRhTimeLtNowOrder();
int updateNosendAndRhTimeLtNowOrder(@Param("now") String now);
@Select("select * from bys_student where phone = #{phone}")
List<Map<String, Object>> selectBys(String phone);
......
......@@ -17,4 +17,11 @@ public interface IHhrUserService extends IService<HhrUser> {
* @return
*/
List<Integer> getUserIds (Integer userId, List<String> roles);
/**
* 获取子用户
* @param userId
* @return
*/
List<Integer> getChildrenUser(Integer userId);
}
package com.winsun.utils;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* md5类
*
* @author 董有沛
*
*/
public class CommonMd5 {
// 32位大写明文加密
public static String encryption(String str)
throws NoSuchAlgorithmException, UnsupportedEncodingException {
String result = "";
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update((str).getBytes("UTF-8"));
byte b[] = md5.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0) {
i += 256;
}
if (i < 16) {
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
result = buf.toString().toUpperCase();
return result;
}
/*public final static String encode(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
try {
byte[] btInput = s.getBytes("UTF-8");
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}*/
}
package com.winsun.utils;
import com.winsun.constant.Constant;
import com.winsun.constant.FilePath;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
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;
......@@ -20,9 +23,8 @@ import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Component;
import javax.net.ssl.SSLHandshakeException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.Charset;
......@@ -55,7 +57,7 @@ public class OrderManage {
}
map.put("timeStr", timeStr);
str = sendAitransOrder(map);
str = sendAitransOrder(map, 0);
} catch (Exception e) {
log.error("预实名接口发起异常",e.getMessage());
}
......@@ -64,13 +66,14 @@ public class OrderManage {
}
// 保存卡品认证信息
public String sendAitransOrder(Map<String, Object> map) throws NoSuchAlgorithmException, UnsupportedEncodingException {
public String sendAitransOrder(Map<String, Object> map, int count) throws NoSuchAlgorithmException, UnsupportedEncodingException {
RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(600000).setConnectTimeout(600000)
.setConnectionRequestTimeout(600000).build();
.setConnectionRequestTimeout(600000)
.build();
CloseableHttpClient httpclient = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
log.info("移动下单前已有参数:" + JSONObject.fromObject(map).toString());
String resultStr = "";
HttpEntity entity = null;
......@@ -136,12 +139,12 @@ public class OrderManage {
//通过API接口下单,必须传入一个外部接入商的订单编号,该编号与智能营销系统编号一一对应
signMap.put("orderOutNum", (String) map.get("orderNum"));
builder.addTextBody("orderSource", "校园合伙人", contentType);// 订单来源 ,选填
signMap.put("orderSource", "校园合伙人");
builder.addTextBody("orderSource", "", contentType);// 订单来源 ,选填
signMap.put("orderSource", "");
builder.addTextBody("orderSourceNum", (String) map.get("orderNum"), contentType);//
builder.addTextBody("orderSourceNum", "", contentType);//
//订单来源单号,选填;与订单来源对应,用于业务上记录订单的来源订单编号
signMap.put("orderSourceNum", (String) map.get("orderNum"));
signMap.put("orderSourceNum", "");
builder.addTextBody("salePointCode", "", contentType);// 销售点编码,选填
signMap.put("salePointCode", "");
......@@ -222,7 +225,7 @@ public class OrderManage {
Map<String, Object> paymentListMap = new HashMap<String, Object>();
paymentListMap.put("id", map.get("salesId"));// 收费项ID,选填;请通过销售品列表接口获取,若不填表示终端补收款
paymentListMap.put("saleName", "");// 销售品名称,选填,若id不填写此项必填写,且只能为终端补收款
paymentListMap.put("saleAmount", "");// 售价,选填
// paymentListMap.put("saleAmount", "");// 售价,选填
paymentListMap.put("payType", "3");// 缴费方式,必填(例:payType:3)3:代理商打款4:穗易付7:货到付款9:第三方托收
paymentListMap.put("payAmount", "0");// 打款金额(支付金额),若选择代理商打款或者穗易付,此项必填
paymentListMap.put("saleAmount", "");// 打款金额,若选择货到付款,此项必填
......@@ -261,22 +264,24 @@ public class OrderManage {
// 将对象装换为json字符串
String productJson = JSONArray.fromObject(productList).toString();
log.info("移动下单产品参数:" + productJson);
try {
builder.addTextBody("productJson", URLEncoder.encode(productJson, "UTF-8"), contentType);// 产品信息,必填
signMap.put("productJson", URLEncoder.encode(productJson, "UTF-8"));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
log.error(e1.getMessage());
e1.printStackTrace();
}
//身份证正面,选填
File file1 = new File((String) map.get("imgUrl1"));
File file1 = new File(map.get("imgUrl1").toString().replace("manager/ciop", FilePath.BACKGROUNDIMG.getValue()).replace("\\", "/"));
//身份证背面,选填
File file2 = new File((String) map.get("imgUrl2"));
File file2 = new File(map.get("imgUrl2").toString().replace("manager/ciop", FilePath.BACKGROUNDIMG.getValue()).replace("\\", "/"));
//手持证件,选填
File file3 = new File((String) map.get("imgUrl3"));
File file3 = new File(map.get("imgUrl3").toString().replace("manager/ciop", FilePath.BACKGROUNDIMG.getValue()).replace("\\", "/"));
//手持证件2,选填
File file4 = new File((String) map.get("imgUrl4"));
File file4 = new File(map.get("imgUrl4").toString().replace("manager/ciop", FilePath.BACKGROUNDIMG.getValue()).replace("\\", "/"));
if (file1 != null) {
ContentBody sfzzmFile = new FileBody(file1);
......@@ -307,16 +312,19 @@ public class OrderManage {
plaintext = plaintext.concat((String) map.get("sign"));
String sign = MD5Utils.md5(plaintext);// md5加密
String sign = CommonMd5.encryption(plaintext);// md5加密
builder.addTextBody("sign", sign, contentType);// 签名,必填
log.info("移动智能平台下单参数:" + plaintext);
try {
//httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(builder.build());
//System.out.println("[CREATE_ORDER]移动产品下单接口,提交参数" + EntityUtils.toString(httpPost.getEntity(), "UTF-8"));
long startTime = System.currentTimeMillis();
Constant.trustEveryone();
HttpResponse response = httpclient.execute(httpPost);
long endTime = System.currentTimeMillis();
log.info("接口调用时间:" + (endTime - startTime) + "ms");
......@@ -336,6 +344,13 @@ public class OrderManage {
if ("000001".equals(isSuccess)) {
log.info("[CREATE_ORDER]下单成功,orderNum=" + orderNum);
}
} catch (SSLHandshakeException s) {
count++;
if (count < 20) {
resultStr = sendAitransOrder(map, count);
} else {
log.error("[HTTP] [CREATE_ORDER] 预付费下单接口异常20次");
}
} catch (Exception e) {
log.error("[HTTP] [CREATE_ORDER] 预付费下单接口异常");
e.printStackTrace();
......
......@@ -200,7 +200,7 @@
<!-- 更新未下单并且融合时间小于当前时间的订单 -->
<update id="updateNosendAndRhTimeLtNowOrder">
update hhr_order set order_status = "待受理" where DATE_FORMAT(rh_time, "%y-%m-%d") &lt; date_format(now(), "%y-%m-%d") and order_status = "未下单"
update hhr_order set order_status = "待受理" where rh_time &lt; #{now} and order_status = "未下单"
</update>
<!-- 00:移动通报学校 -->
......
......@@ -1142,8 +1142,6 @@ public class OrderController extends BaseController {
company = map.get("c").toString();
kuaidiOrder = map.get("d").toString();
String url = "https://dx.dianyuanjiangli.com/mobile/#/hhr/handleSuccessful?orderId=" + order.getId();
log.info("批量下单订单查询短信地址:" + url);
log.info("联系号码:" + order.getContactNumber());
// 发送短信
SendSmsAndMail.sendSms2(order.getContactNumber(), company, kuaidiOrder, "11");
......@@ -1822,7 +1820,7 @@ public class OrderController extends BaseController {
plaintext = plaintext.concat((String) map.get("sign"));
String sign = Md5.encryption(plaintext);// md5加密
String sign = CommonMd5.encryption(plaintext);// md5加密
builder.addTextBody("sign", sign, contentType);// 签名,必填
log.info("移动智能平台下单参数:" + plaintext);
......
......@@ -7,12 +7,11 @@ import com.winsun.auth.core.annotion.Permission;
import com.winsun.auth.core.base.controller.BaseController;
import com.winsun.auth.core.common.model.ResponseData;
import com.winsun.auth.core.shiro.ShiroUser;
import com.winsun.bean.HhrUser;
import com.winsun.bean.Order;
import com.winsun.bean.SalesList;
import com.winsun.mapper.AppMapper;
import com.winsun.mapper.OrderMapper;
import com.winsun.mapper.SalesListMapper;
import com.winsun.mapper.SysUserMapper;
import com.winsun.mapper.*;
import com.winsun.service.IHhrUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -38,6 +37,11 @@ public class hhrUserController extends BaseController {
@Autowired
private SalesListMapper salesListMapper;
@Autowired
private HhrUserMapper hhrUserMapper;
@Autowired
private IHhrUserService hhrUserService;
/**
* 查询订单列表
......@@ -52,7 +56,6 @@ public class hhrUserController extends BaseController {
* @return
*/
@ResponseBody
//@RequestMapping(value = "getOrderList", method = RequestMethod.POST)
@Permission(menuname = "督导查询", value = "getOrderList", method = RequestMethod.POST)
public ResponseData<Map<String, Object>> getOrderList(String userId, Integer pageNo, Integer pageSize, String customer, String orderStatus, String userType, Integer selectFlag) {
if (StringUtils.isBlank(userId)) {
......@@ -60,16 +63,34 @@ public class hhrUserController extends BaseController {
}
Map<String, Object> resultMap = new HashMap<>();
ShiroUser shiroUser = getShiroUser();
HhrUser hhrUser = hhrUserMapper.selectById(shiroUser.getId());
List<String> userList = new ArrayList<>();
if (selectFlag == null || selectFlag == 0) {
// 个人
userList.add(userId);
} else {
List<String> managerSchoolList = appMapper.selectManagerSchool(userId);
if (managerSchoolList == null || managerSchoolList.size() == 0) {
return ResponseData.success(resultMap, "该用户无负责的学校");
// 成员订单
if ("楼长".equals(hhrUser.getPosition())) {
List<Integer> childrenUser = hhrUserService.getChildrenUser(shiroUser.getId());
if (childrenUser.size() == 0) {
return ResponseData.error("当前账号无成员用户");
}
childrenUser.forEach(userid -> {
userList.add(userid + "");
});
}else if("总经理".equals(hhrUser.getPosition())){
// 总经理
List<String> managerSchoolList = appMapper.selectManagerSchool(userId);
if (managerSchoolList == null || managerSchoolList.size() == 0) {
return ResponseData.error( "当前账号无负责的学校");
}
List<String> memberList = appMapper.selectUserBySchool(managerSchoolList);
userList.addAll(memberList);
}else{
return ResponseData.error("无成员订单");
}
List<String> memberList = appMapper.selectUserBySchool(managerSchoolList);
userList.addAll(memberList);
}
Page<Order> page = new Page<>(pageNo == null ? 1 : pageNo, pageSize == null ? 10 : pageSize);
......@@ -89,6 +110,8 @@ public class hhrUserController extends BaseController {
Wrapper<Order> numWrapper = wrapper.clone();
numWrapper.setSqlSelect("COUNT(CASE WHEN order_status IN ('异常单','重新下单') THEN 1 END)AS errorNum," +
"COUNT(CASE WHEN order_status IN ('审核中','待受理','待处理','待活体','待派奖','待选号','待配送','提交中') THEN 1 END)AS dealNum");
numWrapper.eq(StringUtils.isNotBlank(orderStatus), "order_status", orderStatus);
numWrapper.eq(StringUtils.isNotBlank(userType), "user_type", userType);
List<Map<String, Object>> numList = orderMapper.selectMaps(numWrapper);
resultMap.put("orderStatusNum", numList.get(0));
......
......@@ -14,6 +14,7 @@ import com.winsun.bean.YsmUser;
import com.winsun.mapper.OrderMapper;
import com.winsun.mapper.PackageMapper;
import com.winsun.mapper.YsmUserMapper;
import com.winsun.smsUtils.SendSmsAndMail;
import com.winsun.utils.MyBatisPlusUpdateUtils;
import com.winsun.utils.OrderManage;
import lombok.extern.slf4j.Slf4j;
......@@ -78,9 +79,13 @@ public class supervisorController extends BaseController {
if (map.size() == 0) {
return ResponseData.error("当前订单不存在!");
}
Package aPackage = packageMapper.selectById(Integer.parseInt(map.get("packageId").toString()));
map.put("packageName", aPackage.getPackageName());
map.put("advImg", aPackage.getAdvImg());
if (map.get("packageId") != null) {
Package aPackage = packageMapper.selectById(Integer.parseInt(map.get("packageId").toString()));
map.put("packageName", aPackage.getPackageName());
map.put("advImg", aPackage.getAdvImg());
map.put("explains", aPackage.getExplains());
}
//测试用
if (StringUtils.isBlank(map.get("idCard").toString())) {
map.put("idCard", "000000000000000000".substring(0, 14) + "****");
......@@ -91,7 +96,6 @@ public class supervisorController extends BaseController {
map.put("idCard", map.get("idCard").toString().substring(0, 11) + "****");
}
}
map.put("explains", aPackage.getExplains());
//查询历史状态
List<Map<String, Object>> orderHis = orderMapper.selectOrderHis(orderId);
......@@ -147,6 +151,7 @@ public class supervisorController extends BaseController {
if (!user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员"))) {
return ResponseData.error("无数据权限");
}*/
ShiroUser shiroUser = getShiroUser();
if (StringUtils.isNotBlank(orderId)) {
ResponseData<String> verification = verification(orderId);
if (!verification.isSuccess()) {
......@@ -180,11 +185,11 @@ public class supervisorController extends BaseController {
}
Integer integer = orderMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper);
if (integer == 0) {
return ResponseData.error("实名提交失败!");
return ResponseData.error("配送方式修改失败!");
} else {
//user.getName()
orderMapper.inserOrderHis(orderId, "实名提交成功," + dataMapping.get("order_status"), new Date(), "测试");
return ResponseData.success("实名提交成功!");
orderMapper.inserOrderHis(orderId, "修改配送方式," + dataMapping.get("order_status"), new Date(), shiroUser.getName());
return ResponseData.success("配送方式修改成功!");
}
}
......@@ -217,7 +222,7 @@ public class supervisorController extends BaseController {
if(s==null){
return ResponseData.error("选号失败!");
}
if(StringUtils.isNotBlank(map.get("msg").toString())){
if(map.get("msg") != null && StringUtils.isNotBlank(map.get("msg").toString())){
orderMapper.inserOrderHis(orderId, "选号提交失败," + map.get("msg").toString(), new Date(), "测试");
return ResponseData.error(map.get("msg").toString());
}
......@@ -284,11 +289,14 @@ public class supervisorController extends BaseController {
dataMapping.put("kuaidi_order", kuaidiOrder);
Integer integer = orderMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper);
if (integer == 0) {
return ResponseData.error("配送方式提交失败!");
return ResponseData.error("修改快递单号失败!");
} else {
//user.getName()
log.info("联系号码:" + order.getContactNumber());
// 发送短信
SendSmsAndMail.sendSms2(order.getContactNumber(), expressDelivery, kuaidiOrder, "11");
orderMapper.inserOrderHis(orderId, "提交成功," + dataMapping.get("order_status"), new Date(), "测试");
return ResponseData.success("配送方式提交成功!");
return ResponseData.success("修改快递单号成功!");
}
}
......@@ -328,7 +336,7 @@ public class supervisorController extends BaseController {
map.put("userName", order.getCustomerName());// 客户姓名,必填// 联系人,必填
map.put("linkPhone", order.getContactNumber());// 客户(代办人)电话,必填
map.put("idCard", order.getIdCard());
String[] split = order.getSite().split("/");
String[] split = order.getSite().split(" ");
map.put("sheng", split[0]);
map.put("shi", split[1]);
map.put("xian", split[2]);
......@@ -336,10 +344,10 @@ public class supervisorController extends BaseController {
map.put("iccId", iccid);
map.put("orderPhone", order.getBusinessNumber());
map.put("orderNum", order.getOrderNumber());
map.put("imgUrl1", order.getIdCardz().replace(REPLACE,"enclosure"));
map.put("imgUrl2", order.getIdCardf().replace(REPLACE,"enclosure"));
map.put("imgUrl3", order.getIdCardzs().replace(REPLACE,"enclosure"));
map.put("imgUrl4", order.getIdCardzs().replace(REPLACE,"enclosure"));
map.put("imgUrl1", order.getIdCardz());
map.put("imgUrl2", order.getIdCardf());
map.put("imgUrl3", order.getIdCardzs());
map.put("imgUrl4", order.getIdCardzs());
map.put("sign", ysmUser.getSign());
map.put("cardType",order.getKapin());
try {
......
......@@ -84,8 +84,8 @@ public class OrderTask {
orderHistory.setStatus("智能平台状态获取");
// 未获取到需要的状态不做更新
if ("待配送".equals(json.get("orderStatus")) || "物流配送中".equals(json.get("orderStatus"))
|| "配送成功".equals(json.get("orderStatus")) || "归档".equals(json.get("orderStatus"))) {
if ("待配送".equals(json.get("stateName")) || "物流配送中".equals(json.get("stateName"))
|| "配送成功".equals(json.get("stateName")) || "归档".equals(json.get("stateName"))) {
orderHistory.setStatus("审核通过,等待配送");
orderHistoryMapper.insert(orderHistory);
......
......@@ -88,9 +88,16 @@ public class RhZhiNenTask {
log.info("智能平台定时器下单启动");
try{
// 更新融合时间小于当前时间的未下单订单 更新为待受理
int updateNum = orderMapper.updateNosendAndRhTimeLtNowOrder();
log.info("更新待受理订单数:" + updateNum);
// 获取当天日期
Calendar now = Calendar.getInstance();
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int updateNum = orderMapper.updateNosendAndRhTimeLtNowOrder(sdf.format(now.getTime()));
log.info("更新待受理订单数:" + updateNum);
Calendar calendar = Calendar.getInstance();
// 查询未下单并且融合时间为今天的订单
Wrapper<Order> wrapper = new EntityWrapper<>();
......
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