瀏覽代碼

订单管理,支付管理

eganwu 1 年之前
父節點
當前提交
ed2e388f67

+ 5 - 0
src/custom/restcontroller/R.java

@@ -6299,6 +6299,11 @@ public class R {
         }
     }
 
+    public static class ID20240507102402 {
+        public static class v1 {
+        }
+    }
+
 
 }
 

+ 58 - 1
src/custom/restcontroller/system/payment/wechatpay.java

@@ -8,6 +8,7 @@ import common.annotation.API;
 import common.data.Row;
 import common.data.Rows;
 import common.data.SQLFactory;
+import restcontroller.R;
 import utility.wechat.WeChatHelper;
 import utility.tools.Encryption;
 import utility.wechat.miniprogram.WechatMiniProgram;
@@ -164,7 +165,14 @@ public class wechatpay extends Controller {
         String trade_type = content.getString("trade_type");
 
         WechatMiniProgram wechatMiniProgram = new WechatMiniProgram("wechatsaletool");
-        String response = wechatMiniProgram.createPayOrder(orderno, trade_type, wechat_code, "", "使用年费");
+
+        int order_amount = 0;
+        Rows sys_payorderRows = dbConnect.runSqlQuery("select amount from sys_payorder where orderno='" + orderno + "'");
+        if (sys_payorderRows.isNotEmpty()) {
+            order_amount = new Double(sys_payorderRows.get(0).getDouble("amount") * 100).intValue();
+        }
+
+        String response = wechatMiniProgram.createPayOrder(orderno, trade_type, wechat_code, "", "使用年费",order_amount);
         JSONObject jsonObject = JSONObject.parseObject(response);
         if (jsonObject.containsKey("prepay_id")) {
             String package_str = "prepay_id=" + jsonObject.getStringValue("prepay_id");
@@ -197,6 +205,55 @@ public class wechatpay extends Controller {
         return getSucReturnObject().setData(object).toString();
 
 
+    }
+
+    @API(title = "小程序门店支付", apiversion = R.ID20240507102402.v1.class)
+    public String createStoreWechatOrder() throws Exception {
+        String sonum = content.getString("sonum");
+        String wechat_code = content.getString("wechat_code");
+        //APP、JSAPI
+        String trade_type = content.getString("trade_type");
+
+        int order_amount = 0;
+        Rows custorderRows = dbConnect.runSqlQuery("select amount from sa_custorder where sonum='" + sonum + "'");
+        if (custorderRows.isNotEmpty()) {
+            order_amount = new Double(custorderRows.get(0).getDouble("amount") * 100).intValue();
+        }
+
+        WechatMiniProgram wechatMiniProgram = new WechatMiniProgram("wechatsaletool");
+        String response = wechatMiniProgram.createPayOrder(sonum, trade_type, wechat_code, "", "购买商品",order_amount);
+        JSONObject jsonObject = JSONObject.parseObject(response);
+        if (jsonObject.containsKey("prepay_id")) {
+            String package_str = "prepay_id=" + jsonObject.getStringValue("prepay_id");
+        } else {
+            return getErrReturnObject().setErrMsg(jsonObject.getStringValue("message")).toString();
+        }
+
+        dbConnect.runSqlUpdate("UPDATE sa_custorder SET ispaid=1 WHERE sonum='" + sonum + "' and siteid='" + siteid + "'");
+
+        //应用ID
+        String appid = wechatMiniProgram.getAppId();
+        //随机码
+        String nonceStr = createNonce_str(appid);
+        String package_str = "prepay_id=" + jsonObject.getStringValue("prepay_id");
+        String timeStamp = String.valueOf(Calendar.getInstance().getTime().getTime() / 1000);
+
+        JSONObject object = new JSONObject();
+        object.put("appId", appid);
+        object.put("timeStamp", timeStamp);
+        object.put("nonceStr", nonceStr);
+        object.put("package", package_str);
+
+        object.put("signType", "RSA");
+        String B = appid + "\n"
+                + timeStamp + "\n"
+                + nonceStr + "\n"
+                + package_str + "\n";
+
+        object.put("paySign", sign(B.getBytes(StandardCharsets.UTF_8)));
+        return getSucReturnObject().setData(object).toString();
+
+
     }
 
 

+ 8 - 19
src/custom/restcontroller/webmanage/saletool/store/Store.java

@@ -193,22 +193,6 @@ public class Store extends Controller {
         long sa_storeid = detailRow.getLong("sa_storeid");
         detailRow.put("attinfos", Attachment.get(this, "sa_store", sa_storeid));
         detailRow.put("headpic",getHeadPic(detailRow.getLong("userid")));
-//        Rows adspaceRows = dbConnect.runSqlQuery("SELECT * from sys_adspace WHERE systemclient='wechatsaletool' and isused=1");
-
-//        for (Row adspaceRow : adspaceRows) {
-//            Long sys_adspaceid = adspaceRow.getLong("sys_adspaceid");
-//            querySQL = SQLFactory.createQuerySQL(this, "sys_ad")
-//                    .setTableAlias("t1");
-//            querySQL.setSiteid(siteid);
-//            querySQL.setWhere("sys_adspaceid", sys_adspaceid);
-//            querySQL.setDataAuth(true);
-//            Rows adRows = querySQL.query();
-//            RowsMap attinfosRowsMap = Attachment.get(this, "sys_ad", adRows.toArrayList("sys_adid", new ArrayList<>()));
-//            for (Row row : adRows) {
-//                row.put("attinfos", attinfosRowsMap.getOrDefault(row.getString("sys_adid"), new Rows()));
-//            }
-//            detailRow.put("ad_" + adspaceRow.getString("location"), adRows);
-//        }
 
         addHistory(sa_storeid);
 
@@ -247,12 +231,15 @@ public class Store extends Controller {
     @API(title = "查询历史足迹", apiversion = R.ID20240416162002.v1.class)
     public String getHistory() throws YosException {
 
-        QuerySQL querySQL = SQLFactory.createQuerySQL(controller, "sa_store"
-                        , "sa_storeid", "storename","longitude","latitude")
+        String longitude = content.getStringValue("longitude");
+        String latitude = content.getStringValue("latitude");
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(controller, "sa_store")
                 .setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise_hr", "t2", "t2.sys_enterprise_hrid=t1.leader_hrid and t2.siteid=t1.siteid"
-                , "name","phonenumber");
+                , "name","phonenumber","userid");
         querySQL.addJoinTable(JOINTYPE.inner, "sa_store_history", "t3", "t3.sa_storeid=t1.sa_storeid and t3.siteid=t1.siteid");
+        querySQL.addQueryFields("distance", "st_distance_sphere(point(longitude,latitude),point('" + longitude + "','" + latitude + "'))");
         querySQL.setSiteid(siteid);
         querySQL.setWhere("t3.userid",userid);
         querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
@@ -262,6 +249,8 @@ public class Store extends Controller {
 
         for (Row row:rows) {
             row.put("attinfos", attinfoRows.getOrDefault(row.getString("sa_storeid"), new Rows()));
+            row.put("distance", String.format("%.2f", row.getDouble("distance")));
+            row.put("headpic",getHeadPic(row.getLong("userid")));
         }
 
 

+ 2 - 2
src/custom/utility/wechat/miniprogram/WechatMiniProgram.java

@@ -110,9 +110,9 @@ public class WechatMiniProgram extends BaseClass {
      * @param custip      客户端IP地址
      * @return
      */
-    public String createPayOrder(String orderno, String trade_type, String wechat_code, String custip,  String title) throws YosException {
+    public String createPayOrder(String orderno, String trade_type, String wechat_code, String custip,  String title,int order_amount) throws YosException {
         WechatPay wechatPay = new WechatPay("wechatsaletool");
-        return wechatPay.createPayOrder(orderno, trade_type, getWechatUserID(wechat_code).getOpenid(), custip, title);
+        return wechatPay.createPayOrder(orderno, trade_type, getWechatUserID(wechat_code).getOpenid(), custip, title, order_amount);
     }
 
 

+ 2 - 2
src/custom/utility/wechat/wechatpay/POJO/CreateOrderRequest.java

@@ -81,12 +81,12 @@ public class CreateOrderRequest extends Base {
         return getCreateOrderResponse(res);
     }
 
-    public String getOrderResponseV3(String mch_key) {
+    public String getOrderResponseV3(String mch_key,String title) {
         String json = "";
         JSONObject obj = new JSONObject();
         obj.put("appid", appid);
         obj.put("mchid", mch_id);
-        obj.put("description", "使用年费");
+        obj.put("description", title);
         obj.put("out_trade_no", out_trade_no);
         obj.put("notify_url", notify_url);
         JSONObject amount = new JSONObject();

+ 2 - 9
src/custom/utility/wechat/wechatpay/WechatPay.java

@@ -40,14 +40,7 @@ public class WechatPay extends BaseClass {
      * @param title      支付标题
      * @return
      */
-    public String createPayOrder(String orderno, String trade_type, String openid, String custip, String title) throws YosException {
-
-
-        int order_amount = 0;
-        Rows sys_payorderRows = dbConnect.runSqlQuery("select amount from sys_payorder where orderno='" + orderno + "'");
-        if (sys_payorderRows.isNotEmpty()) {
-            order_amount = new Double(sys_payorderRows.get(0).getDouble("amount") * 100).intValue();
-        }
+    public String createPayOrder(String orderno, String trade_type, String openid, String custip, String title,int order_amount) throws YosException {
 
         /**
          * 开始创建微信支付订单
@@ -62,7 +55,7 @@ public class WechatPay extends BaseClass {
         order.setSpbill_create_ip(custip);
         order.setTotal_fee(order_amount);
         order.setTrade_type(trade_type);//APP、JSAPI、
-        String response = order.getOrderResponseV3(WeChatHelper.mch_key);
+        String response = order.getOrderResponseV3(WeChatHelper.mch_key,title);
         return response;
     }