Commit 12636b65 authored by 谢希宇's avatar 谢希宇

Aidea product update by Strive Date 2020-11-28

parent 51899f8c
...@@ -326,7 +326,8 @@ ...@@ -326,7 +326,8 @@
"mData": "userName", "mData": "userName",
"mRender": function (a, b, c, d) { "mRender": function (a, b, c, d) {
if (c) { if (c) {
return c.userName.slice(0, 1) + '*' + c.userName.slice(2, 3); console.log(c.userName);
return c.userName.slice(0, 1) + '*' + c.userName.slice(2, c.userName.length);
} else { } else {
return null; return null;
} }
......
...@@ -173,7 +173,17 @@ ...@@ -173,7 +173,17 @@
> >
</div> </div>
<div class="form-group form-md-line-input col-xs-5"> <div class="form-group form-md-line-input col-xs-10">
<label>付款链接<font style="color: red"></font></label>
<input type="text"
class="form-control" name="payUrl"
id="payUrl" readonly="readonly"
maxlength="50" placeholder=""
value="$!{data.payUrl}"
>
</div>
<div class="form-group form-md-line-input col-xs-10">
<label>付款二维码<font style="color: red"></font></label> <label>付款二维码<font style="color: red"></font></label>
<div id="qrcodeDiv"></div> <div id="qrcodeDiv"></div>
</div> </div>
...@@ -526,15 +536,13 @@ ...@@ -526,15 +536,13 @@
}); });
} }
let qrcodeUrl = `$!{data.remarks}`; let qrcodeUrl = `$!{data.payUrl}`;
let qrcodeObj = JSON.parse(qrcodeUrl);
console.log(qrcodeObj.code_url);
var qrcode = new QRCode("qrcodeDiv", var qrcode = new QRCode("qrcodeDiv",
{ {
render: "canvas", //也可以替换为table render: "canvas", //也可以替换为table
width: 200, width: 200,
height: 200, height: 200,
text: qrcodeObj.code_url text: qrcodeUrl
}); });
</script> </script>
</body> </body>
......
...@@ -558,13 +558,14 @@ ...@@ -558,13 +558,14 @@
t.number, t.number,
t.pay_status AS payStatus, t.pay_status AS payStatus,
t.total_amount AS totalAmount, t.total_amount AS totalAmount,
t.pay_time AS payTime, t.order_amount AS orderAmount,
DATE_FORMAT(t.pay_time, '%Y-%m-%d %H:%i:%s') AS payTime,
t.trade_no AS tradeNo, t.trade_no AS tradeNo,
t.courier_number AS courierNumber, t.courier_number AS courierNumber,
t.order_cancel AS orderCancel, t.order_cancel AS orderCancel,
t.status, t.status,
DATE_FORMAT(t.create_time,'%Y-%m-%d %h:%i:%s') AS createTime, DATE_FORMAT(t.create_time, '%Y-%m-%d %H:%i:%s') AS createTime,
DATE_FORMAT(t.order_time,'%Y-%m-%d %h:%i:%s') AS orderTime, DATE_FORMAT(t.order_time, '%Y-%m-%d %H:%i:%s') AS orderTime,
s.address_name AS addressName, s.address_name AS addressName,
a.areaname AS province, a.areaname AS province,
b.areaname AS city, b.areaname AS city,
......
...@@ -48,13 +48,13 @@ public class OrderExpiredRemindJob implements Job { ...@@ -48,13 +48,13 @@ public class OrderExpiredRemindJob implements Job {
Date orderTime = ord.getOrderTime();//确认时间 Date orderTime = ord.getOrderTime();//确认时间
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.setTime(orderTime); calendar.setTime(orderTime);
calendar.add(Calendar.MINUTE, 30); calendar.add(Calendar.HOUR, 2);
orderTime = calendar.getTime(); orderTime = calendar.getTime();
//超过半小时 //超过半小时
if (orderTime.compareTo(new Date()) < 0 ) { if (orderTime.compareTo(new Date()) < 0 ) {
ord.setStatus("5"); ord.setStatus("5");
ord.setCancelTime(new Date()); ord.setCancelTime(new Date());
ord.setOrderCancel("订单超时取消"); ord.setOrderCancel("订单超时取消");
orderService.update(ord); orderService.update(ord);
} }
} }
......
...@@ -12,6 +12,7 @@ import java.util.Date; ...@@ -12,6 +12,7 @@ import java.util.Date;
*/ */
@Data @Data
public class OrderFromVO { public class OrderFromVO {
private Long id; private Long id;
private String number; private String number;
private String courierNumber; private String courierNumber;
...@@ -21,7 +22,7 @@ public class OrderFromVO { ...@@ -21,7 +22,7 @@ public class OrderFromVO {
private Long drugsNum; private Long drugsNum;
private double orderAmount; private double orderAmount;
private String address; private String address;
private Long payStatus; private String payStatus;
private String description; private String description;
private String tradeNo; private String tradeNo;
@JSONField(format = "yyyy-MM-dd HH:mm:ss") @JSONField(format = "yyyy-MM-dd HH:mm:ss")
...@@ -33,6 +34,6 @@ public class OrderFromVO { ...@@ -33,6 +34,6 @@ public class OrderFromVO {
private String openid; private String openid;
private String status; private String status;
private String remarks; private String remarks;
private String payUrl;
} }
...@@ -17,23 +17,28 @@ public class OrderMobile { ...@@ -17,23 +17,28 @@ public class OrderMobile {
private Long id; private Long id;
/*订单编码*/ /*订单编码*/
private String number; private String number;
/*付款状态*/ /*付款回调*/
private Long payStatus; private String payStatus;
/*订单id*/ /*订单金额*/
private Double totalAmount; private Double totalAmount;
/*微信订单金额*/
private Double orderAmount;
/*确认时间*/
private String orderTime;
/*付款时间*/ /*付款时间*/
private Date payTime; private String payTime;
/*交易号*/ /*交易号*/
private Long tradeNo; private String tradeNo;
/*发票编码*/
private String confirm;
/*快递单号*/ /*快递单号*/
private String courierNumber; private String courierNumber;
/*订单取消原因*/ /*订单取消原因*/
private String orderCancel; private String orderCancel;
/*状态*/ /*状态*/
private Long status; private String status;
/*订单创建时间*/ /*订单创建时间*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss") private String createTime;
private Date createTime;
/*收货人姓名*/ /*收货人姓名*/
private String addressName; private String addressName;
/*详细收货地址*/ /*详细收货地址*/
...@@ -47,10 +52,6 @@ public class OrderMobile { ...@@ -47,10 +52,6 @@ public class OrderMobile {
/*区县*/ /*区县*/
private String area; private String area;
private String orderTime;
private String confirm;
private List<ProductMobile> ProductMobile; private List<ProductMobile> ProductMobile;
} }
...@@ -56,7 +56,7 @@ public class WechatPayUtils { ...@@ -56,7 +56,7 @@ public class WechatPayUtils {
* @param params * @param params
* @return * @return
*/ */
private static String getSign(SortedMap<String, String> params) { public static String getSign(SortedMap<String, String> params, boolean isKey) {
String secretKey = SystemConfig.p.getProperty("mch.secret_key");//key为商户平台设置的密钥key String secretKey = SystemConfig.p.getProperty("mch.secret_key");//key为商户平台设置的密钥key
Map<String, String> map = new TreeMap<>(); Map<String, String> map = new TreeMap<>();
...@@ -75,7 +75,8 @@ public class WechatPayUtils { ...@@ -75,7 +75,8 @@ public class WechatPayUtils {
stringBuffer.append(key).append("=").append(value).append("&"); stringBuffer.append(key).append("=").append(value).append("&");
} }
System.out.println(stringBuffer.toString()); System.out.println(stringBuffer.toString());
stringBuffer.append("key=" + secretKey); if (isKey)
stringBuffer.append("key=" + secretKey);
String md5Str = HashKit.md5(stringBuffer.toString()).toUpperCase(); String md5Str = HashKit.md5(stringBuffer.toString()).toUpperCase();
return md5Str; return md5Str;
...@@ -92,13 +93,13 @@ public class WechatPayUtils { ...@@ -92,13 +93,13 @@ public class WechatPayUtils {
params.put("appid", SystemConfig.p.getProperty("WX_MP_SERVER_APPID")); params.put("appid", SystemConfig.p.getProperty("WX_MP_SERVER_APPID"));
params.put("mch_id", SystemConfig.p.getProperty("mch.mch_id")); params.put("mch_id", SystemConfig.p.getProperty("mch.mch_id"));
params.put("nonce_str", randomStr); params.put("nonce_str", randomStr);
params.put("body", "诺康大药房药品咨询"); params.put("body", SystemConfig.p.getProperty("mch.title"));
params.put("out_trade_no", order.getNumber()); params.put("out_trade_no", order.getNumber());
params.put("total_fee", String.valueOf(order.getOrderAmount().intValue() * 100)); params.put("total_fee", String.valueOf(order.getOrderAmount().intValue() * 100));
params.put("spbill_create_ip", SystemConfig.p.getProperty("mch.spbill_id")); params.put("spbill_create_ip", SystemConfig.p.getProperty("mch.spbill_id"));
params.put("notify_url", SystemConfig.p.getProperty("mch.notify_url")); params.put("notify_url", SystemConfig.p.getProperty("mch.notify_url"));
params.put("trade_type", "NATIVE"); params.put("trade_type", "JSAPI");
params.put("product_id", order.getProductNumber()); params.put("openid", order.getOpenid());
return params; return params;
} }
...@@ -106,7 +107,7 @@ public class WechatPayUtils { ...@@ -106,7 +107,7 @@ public class WechatPayUtils {
String randomStr = generateRandomNumber(); String randomStr = generateRandomNumber();
SortedMap<String, String> params = generateOrderMap(order, randomStr); SortedMap<String, String> params = generateOrderMap(order, randomStr);
String sign = getSign(params); String sign = getSign(params, true);
params.put("sign", sign); params.put("sign", sign);
String xmlObj = parseXML(params); String xmlObj = parseXML(params);
......
...@@ -98,4 +98,13 @@ public interface OrderService extends GenericService<Order> { ...@@ -98,4 +98,13 @@ public interface OrderService extends GenericService<Order> {
* @return * @return
*/ */
String callBackPayStatus(HttpServletRequest request); String callBackPayStatus(HttpServletRequest request);
/**
* 获取移动端jsapi支付参数
* @param orderId
* @param openId
* @param appId
* @return
*/
String findOrderPayParams(String orderId, String openId, String appId, String prepayId);
} }
...@@ -15,6 +15,8 @@ import com.cftech.core.util.SystemConfig; ...@@ -15,6 +15,8 @@ import com.cftech.core.util.SystemConfig;
import com.cftech.invoice.model.Invoice; import com.cftech.invoice.model.Invoice;
import com.cftech.invoice.model.InvoiceDto; import com.cftech.invoice.model.InvoiceDto;
import com.cftech.invoice.service.InvoiceService; import com.cftech.invoice.service.InvoiceService;
import com.cftech.mp.fans.model.MpFanssEntity;
import com.cftech.mp.fans.service.MpFanssService;
import com.cftech.order.model.*; import com.cftech.order.model.*;
import com.cftech.order.dao.OrderMapper; import com.cftech.order.dao.OrderMapper;
import com.cftech.order.pay.WechatPayUtils; import com.cftech.order.pay.WechatPayUtils;
...@@ -61,6 +63,9 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order ...@@ -61,6 +63,9 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order
@Autowired @Autowired
private CodingruleUtils codingruleUtils; private CodingruleUtils codingruleUtils;
@Autowired
private MpFanssService mpFanssService;
@Override @Override
public GenericDao<Order> getGenericMapper() { public GenericDao<Order> getGenericMapper() {
...@@ -444,4 +449,61 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order ...@@ -444,4 +449,61 @@ public class OrderServiceImpl extends GenericServiceImpl<Order> implements Order
return WechatPayUtils.retFailXml; return WechatPayUtils.retFailXml;
} }
@Override
public String findOrderPayParams(String orderId, String openId, String appId, String prepayId) {
JSONObject retObj = new JSONObject();
try {
MpAccountsEntity mpAccountsEntity = mpAccountsService.getMpAccountsAppid(appId);
if (mpAccountsEntity == null) {
retObj.put("errorNo", 1);
retObj.put("errorMsg", "公众号信息获取失败!");
return retObj.toString();
}
//获取待付款订单
Conds orderConds = new Conds();
orderConds.equal("o.del_flag", Constants.DEL_FLAG_0);
orderConds.equal("o.status", "1");
orderConds.equal("o.id", orderId);
Order order = this.fetchSearchByConds(orderConds);
if (order == null) {
retObj.put("errorNo", 1);
retObj.put("errorMsg", "订单信息获取失败!");
return retObj.toString();
}
MpFanssEntity fanssEntity = mpFanssService.getWxUser(openId);
if (fanssEntity == null) {
retObj.put("errorNo", 1);
retObj.put("errorMsg", "粉丝信息获取失败!");
return retObj.toString();
}
JSONObject payParams = new JSONObject();
payParams.put("appId", mpAccountsEntity.getAppid());
payParams.put("timeStamp", Long.toString(System.currentTimeMillis() / 1000));
payParams.put("nonceStr", UUID.randomUUID().toString().replaceAll("-", ""));
payParams.put("package", "prepay_id=" + prepayId);
payParams.put("signType", "MD5");
SortedMap<String, String> params = new TreeMap<>();
Iterator it = payParams.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
params.put(entry.getKey(), entry.getValue());
}
String sign = WechatPayUtils.getSign(params, true);
payParams.put("paySign", sign);
retObj.put("errorNo", 0);
retObj.put("data", payParams);
} catch (Exception e) {
e.printStackTrace();
log.error("下单接口获取订单信息失败! error msg = " + e.getMessage());
}
return retObj.toString();
}
} }
\ No newline at end of file
package com.cftech.order.web; package com.cftech.order.web;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cftech.core.sql.Conds;
import com.cftech.core.util.Constants;
import com.cftech.invoice.model.InvoiceDto; import com.cftech.invoice.model.InvoiceDto;
import com.cftech.order.model.Order;
import com.cftech.order.model.OrderMobileDto; import com.cftech.order.model.OrderMobileDto;
import com.cftech.order.service.OrderService; import com.cftech.order.service.OrderService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -10,6 +13,7 @@ import org.springframework.http.MediaType; ...@@ -10,6 +13,7 @@ import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List;
/** /**
* @author :licc * @author :licc
...@@ -80,4 +84,13 @@ public class MobileOrderController { ...@@ -80,4 +84,13 @@ public class MobileOrderController {
log.info(" wechatCallback 已触发微信付款回调!"); log.info(" wechatCallback 已触发微信付款回调!");
return orderService.callBackPayStatus(request); return orderService.callBackPayStatus(request);
} }
@RequestMapping(value = "/findOrderPayParams", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public String findOrderPayParams(@RequestParam String orderId,
@RequestParam String openId,
@RequestParam String appId,
@RequestParam String prepayId) {
return orderService.findOrderPayParams(orderId, openId, appId, prepayId);
}
} }
...@@ -120,7 +120,22 @@ public class OrderController { ...@@ -120,7 +120,22 @@ public class OrderController {
@RequestMapping("/form") @RequestMapping("/form")
public String form(HttpServletRequest request, String id, String pageType, Model model) { public String form(HttpServletRequest request, String id, String pageType, Model model) {
if (!StringUtils.isEmpty(id)) { if (!StringUtils.isEmpty(id)) {
Long accountId = UserUtils.getmpaccounts(request);
MpAccountsEntity mpAccountsEntity = accountsService.getDetail(accountId);
OrderFromVO orderFromVO = orderService.fetchId(id);//订单信息 OrderFromVO orderFromVO = orderService.fetchId(id);//订单信息
if (!StringUtils.equals(orderFromVO.getStatus(), "0")) {
String remarks = orderFromVO.getRemarks();
if (StringUtils.isNoneBlank(remarks) && remarks.contains("prepay_id")) {
JSONObject remarkObj = JSONObject.parseObject(remarks);
String payUrl = SystemConfig.p.getProperty("MOBILE_MP_DOMAIN_NAME") + "/orderPay?appid=" + mpAccountsEntity.getAppid() + //
"&tokenId=1&orderId=" + orderFromVO.getId() + "&prepayId=" + remarkObj.getString("prepay_id");
orderFromVO.setPayUrl(payUrl);
}
}
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(orderFromVO)); JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(orderFromVO));
model.addAttribute("data", jsonObject); model.addAttribute("data", jsonObject);
......
...@@ -30,6 +30,13 @@ public class ExpressOrderInfoUtils { ...@@ -30,6 +30,13 @@ public class ExpressOrderInfoUtils {
private static final String payMethod = "1";//寄方付 private static final String payMethod = "1";//寄方付
/**
* 生成打印面单
* @param order
* @param orderDetails
* @param waybillObj
* @return
*/
public static JSONObject generateBillPrinterObj(Order order, List<OrderDetails> orderDetails, Waybill waybillObj) { public static JSONObject generateBillPrinterObj(Order order, List<OrderDetails> orderDetails, Waybill waybillObj) {
JSONObject billPrinter = new JSONObject(); JSONObject billPrinter = new JSONObject();
try { try {
...@@ -58,8 +65,18 @@ public class ExpressOrderInfoUtils { ...@@ -58,8 +65,18 @@ public class ExpressOrderInfoUtils {
billPrinter.put("consignerMobile", waybillObj.getMobile()); billPrinter.put("consignerMobile", waybillObj.getMobile());
billPrinter.put("consignerProvince", waybillObj.getProvince()); billPrinter.put("consignerProvince", waybillObj.getProvince());
billPrinter.put("consignerCity", waybillObj.getCity()); billPrinter.put("consignerCity", waybillObj.getCity());
billPrinter.put("consignerCounty", waybillObj.getCounty()); if (StringUtils.isNoneBlank(waybillObj.getCounty()) && waybillObj.getCounty().length() >= 2) {
billPrinter.put("consignerAddress", waybillObj.getAddress()); StringBuilder county = new StringBuilder(waybillObj.getCounty());
billPrinter.put("consignerCounty", county.replace(1, 2, "*"));
} else {
billPrinter.put("consignerCounty", "");
}
if (StringUtils.isNoneBlank(waybillObj.getAddress()) && waybillObj.getAddress().length() >= 2) {
StringBuilder address = new StringBuilder(waybillObj.getAddress());
billPrinter.put("consignerAddress", address.replace(0, 2, "*"));
} else {
billPrinter.put("consignerAddress", "");
}
billPrinter.put("consignerShipperCode", "225000"); billPrinter.put("consignerShipperCode", "225000");
//billPrinter.put("totalFee", "");//费用合计 //billPrinter.put("totalFee", "");//费用合计
...@@ -129,7 +146,7 @@ public class ExpressOrderInfoUtils { ...@@ -129,7 +146,7 @@ public class ExpressOrderInfoUtils {
waybill.put("language", language); waybill.put("language", language);
waybill.put("orderId", order.getNumber());//快递单号 waybill.put("orderId", order.getNumber());//快递单号
waybill.put("cargoDesc", "医疗药品");//托寄物描述 waybill.put("cargoDesc", "医疗药品");//托寄物描述
waybill.put("monthlyCard", "7551234567");//顺丰月结卡号 waybill.put("monthlyCard", SystemConfig.p.getProperty("sf.monthlyCard"));//顺丰月结卡号
waybill.put("orderSource", "WECHAT_STORE");//平台编码 微信咨询平台 waybill.put("orderSource", "WECHAT_STORE");//平台编码 微信咨询平台
waybill.put("remark", waybillObj.getWaybillRemark());//订单备注 waybill.put("remark", waybillObj.getWaybillRemark());//订单备注
waybill.put("payMethod", payMethod);//寄放付 waybill.put("payMethod", payMethod);//寄放付
......
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