From 9923d2fee1010fe3e0dd7167c38107da16a7b2f2 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 18 七月 2025 19:18:29 +0800
Subject: [PATCH] 111
---
server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java | 9
server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java | 4
server/services/src/main/java/com/doumee/config/wx/TransferDetailEntityNew.java | 213 ++++++++++++
server/services/src/main/resources/application-dev.yml | 22
server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java | 34 +-
server/web/src/main/java/com/doumee/api/web/OrdersApi.java | 18
server/pom.xml | 2
server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java | 4
server/services/src/main/java/com/doumee/core/constants/Constants.java | 22 +
server/services/src/main/java/com/doumee/config/wx/TransferToUser.java | 27 +
server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java | 112 ++++-
server/services/src/main/java/com/doumee/dao/business/model/Orders.java | 38 ++
server/services/src/main/java/com/doumee/dao/dto/ReusePayDTO.java | 27 +
server/services/src/main/java/com/doumee/service/business/OrdersService.java | 9
server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java | 110 ++++++
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 329 +++++++++++++-----
server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java | 3
17 files changed, 796 insertions(+), 187 deletions(-)
diff --git a/server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java b/server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java
index b7a6a64..33f43ee 100644
--- a/server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java
+++ b/server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java
@@ -1,9 +1,15 @@
package com.doumee.api.business;
+import com.alibaba.fastjson.JSON;
+import com.doumee.config.wx.TransferDetailEntityNew;
import com.doumee.config.wx.WxMiniConfig;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
import com.doumee.service.business.OrdersService;
+import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
+import com.wechat.pay.java.core.RSAPublicKeyConfig;
import com.wechat.pay.java.core.notification.NotificationConfig;
import com.wechat.pay.java.core.notification.NotificationParser;
import com.wechat.pay.java.core.notification.RequestParam;
@@ -20,7 +26,11 @@
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
/**
* Created by IntelliJ IDEA.
@@ -41,7 +51,7 @@
*
* @return
*/
- @PostMapping("/api/wxPayNotify")
+ @PostMapping("/web/wxPayNotify")
public ApiResponse wxPay_notify(HttpServletRequest request) {
try {
ServletInputStream inputStream = request.getInputStream();
@@ -76,6 +86,8 @@
NotificationParser parser = new NotificationParser(config);
+
+
Transaction result = parser.parse(requestParam, Transaction.class);
//鑷畾涔夎鍗曞彿
String outTradeNo = result.getOutTradeNo();
@@ -105,7 +117,7 @@
return ApiResponse.failed("");
}
}
- @PostMapping("/api/wxRefundNotify")
+ @PostMapping("/web/wxRefundNotify")
public ApiResponse wxRefundNotify(HttpServletRequest request) {
log.error("寰俊閫�娆惧洖璋冪粨鏋滃紑濮�===========" );
try {
@@ -156,4 +168,98 @@
}
}
+
+
+
+ /**
+ * 寰俊鍟嗘埛闆剁嚎杞处 - 鍥炶皟閫氱煡
+ * @Context娉ㄨВ 鎶奌TTP璇锋眰涓婁笅鏂囧璞℃敞鍏ヨ繘鏉ワ紝HttpServletRequest銆丠ttpServletResponse銆乁riInfo 绛�
+ * @return
+ */
+ @PostMapping(value = "/web/wechat/transferNotify")
+ public ApiResponse wxPayCallback( HttpServletRequest request) {
+ Map<String,String> errMap = new HashMap<>();
+ try {
+ log.info("寰俊鍟嗘埛闆剁嚎杞处 - 鍥炶皟閫氱煡 /wxpay/callback");
+ TransferDetailEntityNew entity = wxPaySuccessCallback(request);
+ log.info("transfer ok.{}",entity);
+ //鍥炶皟鎴愬姛鍚庡鐞嗚嚜宸辩殑涓氬姟
+ if(entity != null){
+ }
+ return ApiResponse.success("澶勭悊鎴愬姛");
+ } catch (Exception e) {
+ log.error("寰俊鍟嗘埛闆剁嚎杞处 - 鍥炶皟閫氱煡 /wxpay/callback锛氬紓甯革紒", e);
+ errMap.put("code", "FAIL");
+ errMap.put("message", "鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�");
+ return ApiResponse.failed("澶勭悊澶辫触");
+ }
+ }
+
+ public TransferDetailEntityNew wxPaySuccessCallback(HttpServletRequest request) throws IOException {
+ String requestBody = getBodyString(request, "UTF-8");
+ //璇佷功搴忓垪鍙凤紙寰俊骞冲彴锛� 楠岀鐨勨�滃井淇℃敮浠樺钩鍙拌瘉涔︹�濇墍瀵瑰簲鐨勫钩鍙拌瘉涔﹀簭鍒楀彿
+ String wechatPaySerial = request.getHeader("Wechatpay-Serial");
+ //寰俊浼犻�掕繃鏉ョ殑绛惧悕 楠岀鐨勭鍚嶅��
+ String wechatSignature = request.getHeader("Wechatpay-Signature");
+ //楠岀鐨勬椂闂存埑
+ String wechatTimestamp = request.getHeader("Wechatpay-Timestamp");
+ //楠岀鐨勯殢鏈哄瓧绗︿覆
+ String wechatpayNonce = request.getHeader("Wechatpay-Nonce");
+ // 1. 鏋勯�� RequestParam
+ RequestParam requestParam = new RequestParam.Builder()
+ .serialNumber(wechatPaySerial)
+ .nonce(wechatpayNonce)
+ .signature(wechatSignature)
+ .timestamp(wechatTimestamp)
+ .body(requestBody)
+ .build();
+ // 2. 鏋勫缓Config RSAPublicKeyConfig
+ Config config = new RSAPublicKeyConfig.Builder()
+ .merchantId(WxMiniConfig.wxProperties.getMchId()) //寰俊鏀粯鐨勫晢鎴峰彿
+ .privateKeyFromPath(WxMiniConfig.wxProperties.getPrivateKeyPath()) // 鍟嗘埛API璇佷功绉侀挜鐨勫瓨鏀捐矾寰�
+ .publicKeyFromPath(WxMiniConfig.wxProperties.getWechatPubKeyPath()) //寰俊鏀粯鍏挜鐨勫瓨鏀捐矾寰�
+ .publicKeyId(WxMiniConfig.wxProperties.getWechatPayPublicKeyId()) //寰俊鏀粯鍏挜ID
+ .merchantSerialNumber(WxMiniConfig.wxProperties.getSerialNumer()) //鍟嗘埛API璇佷功搴忓垪鍙�
+ .apiV3Key("") //APIv3瀵嗛挜
+ .build();
+ log.info("WxPayService.wxPaySuccessCallback request : wechatPaySerial is [{}] , wechatSignature is [{}] , wechatTimestamp is [{}] , wechatpayNonce is [{}] , requestBody is [{}]",wechatPaySerial,wechatSignature,wechatTimestamp,wechatpayNonce,requestBody);
+ // 3. 鍒濆鍖� NotificationParser
+ NotificationParser parser = new NotificationParser((NotificationConfig) config);
+ try {
+ TransferDetailEntityNew entity = parser.parse(requestParam, TransferDetailEntityNew.class);
+ log.info("WxPayService.wxPaySuccessCallback responseBody: {}", entity != null ? JSON.toJSONString(entity) : null);
+ return entity;
+ } catch (Exception e) {
+ log.error("Exception occurred while processing", e);
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"绯荤粺鍐呴儴閿欒");
+ }
+ }
+
+ /**
+ * 鑾峰彇post璇锋眰涓殑Body
+ *
+ * @param request httpRequest
+ * @return body瀛楃涓�
+ */
+ public static String getBodyString(HttpServletRequest request, String charSet) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ InputStream inputStream = null;
+ BufferedReader reader = null;
+ try {
+ inputStream = request.getInputStream();
+ //璇诲彇娴佸苟灏嗘祦鍐欏嚭鍘�,閬垮厤鏁版嵁娴佷腑鏂�;
+ reader = new BufferedReader(new InputStreamReader(inputStream, charSet));
+ String line;
+ while ((line = reader.readLine()) != null) {
+ sb.append(line);
+ }
+ } catch (IOException e) {
+ log.error("鑾峰彇requestBody寮傚父", e);
+ } finally {
+ inputStream.close();
+ reader.close();
+ }
+ return sb.toString();
+ }
+
}
diff --git a/server/pom.xml b/server/pom.xml
index 3ba17e0..51da524 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -260,7 +260,7 @@
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-java</artifactId>
- <version>0.2.12</version>
+ <version>0.2.15</version>
</dependency>
diff --git a/server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java b/server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java
index 6dd2bf3..0d47a1b 100644
--- a/server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java
+++ b/server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java
@@ -4,6 +4,7 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.Constants;
import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.model.IdentityInfo;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,33 +28,32 @@
private static String goodsOrderUrl = "pages/settlementDetails/settlementDetails?goodsOrderId=";
+ private static String identityInfoUrl = "pages/mine/mine";
@Autowired
private SystemDictDataBiz systemDictDataBiz;
- public void bookingsCancel(String openid, String goodsOrderId, String accessToken, String bikeCode, Date startTime, Date endTime) throws WxErrorException {
+ public void identityInfoMessage(String openid, IdentityInfo identityInfo) throws WxErrorException {
RestTemplate restTemplate = new RestTemplate();
- log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 -> accessToken锛歿}",accessToken);
+ String accessToken = WxMiniConfig.wxMaService.getAccessToken();
+ log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 - 璁よ瘉淇℃伅 -> accessToken锛歿}",accessToken);
//杩欓噷绠�鍗曡捣瑙佹垜浠瘡娆¢兘鑾峰彇鏈�鏂扮殑access_token锛堟椂闂村紑鍙戜腑锛屽簲璇ュ湪access_token蹇繃鏈熸椂鍐嶉噸鏂拌幏鍙栵級
- String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+WxMiniConfig.wxMaService.getAccessToken();
+ String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken;
//鎷兼帴鎺ㄩ�佺殑妯$増
- WxMsgVO wxMsgVo = new WxMsgVO();
+ WxMsgVO wxMsgVO = new WxMsgVO();
//鐢ㄦ埛鐨刼penid锛堣鍙戦�佺粰閭d釜鐢ㄦ埛锛�
- wxMsgVo.setTouser(openid);
+ wxMsgVO.setTouser(openid);
//璁㈤槄娑堟伅妯℃澘id
-// wxMsgVo.setTemplate_id(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.TIME_OUT_TEMPID).getCode());
+ wxMsgVO.setTemplate_id("4H9ztG4E9BxJLwMuYSZ6oiM7yb4KX7u7bYhkhYJP0-Y");
Map<String, TemplateData> m = new HashMap<>(4);
- m.put("character_string1", new TemplateData(bikeCode));
- //瑙i攣鏃堕棿
- m.put("date3", new TemplateData(DateUtil.getFomartDate(startTime,"yyyy/MM/dd HH:mm")));
- //涓婇攣鏃堕棿
- m.put("date4", new TemplateData(DateUtil.getFomartDate(endTime,"yyyy/MM/dd HH:mm")));
- //娓╅Θ鎻愰啋
- m.put("thing5", new TemplateData("涓存椂閿佽溅宸茶秴杩囨渶澶ф椂闀匡紝宸茶嚜鍔ㄨ繕杞�"));
- wxMsgVo.setPage(goodsOrderUrl + goodsOrderId);
- wxMsgVo.setData(m);
+ m.put("thing11", new TemplateData(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO)?"鐢ㄥ伐璁よ瘉":Constants.equalsInteger(identityInfo.getType(),Constants.ONE)?"杩愯揣璁よ瘉":"渚涢璁よ瘉"));
+ m.put("phrase4", new TemplateData(Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.TWO)?"璁よ瘉閫氳繃":"璁よ瘉鏈�氳繃"));
+ m.put("date3", new TemplateData(DateUtil.getFomartDate(identityInfo.getAuditTime(),"yyyy-MM-dd HH:mm:ss")));
+ m.put("thing5", new TemplateData(identityInfo.getAuditRemark()));
+ wxMsgVO.setPage(identityInfoUrl);
+ wxMsgVO.setData(m);
ResponseEntity<String> responseEntity =
- restTemplate.postForEntity(url, wxMsgVo, String.class);
- log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 涓存椂閿佽溅瓒呮椂锛歿}", JSONObject.toJSONString(responseEntity));
+ restTemplate.postForEntity(url, wxMsgVO, String.class);
+ log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 璁よ瘉淇℃伅锛歿}", JSONObject.toJSONString(responseEntity));
}
diff --git a/server/services/src/main/java/com/doumee/config/wx/TransferDetailEntityNew.java b/server/services/src/main/java/com/doumee/config/wx/TransferDetailEntityNew.java
new file mode 100644
index 0000000..c40e6df
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/config/wx/TransferDetailEntityNew.java
@@ -0,0 +1,213 @@
+package com.doumee.config.wx;
+
+
+import com.google.gson.annotations.SerializedName;
+import com.wechat.pay.java.core.cipher.PrivacyDecryptor;
+import lombok.Data;
+
+import java.util.Objects;
+
+/**
+ * 鍟嗘埛鍗曞彿鏌ヨ杞处鍗曞疄浣撶被淇℃伅
+ *
+ * @author: suhai
+ * @date: 2025/05/13 11:28
+ */
+@Data
+public class TransferDetailEntityNew {
+ /** 鍟嗘埛鍙� Y 璇存槑锛氬井淇℃敮浠樺垎閰嶇殑鍟嗘埛鍙� */
+ @SerializedName("mch_id")
+ private String mchId;
+
+ /** 鍟嗘埛鍗曞彿 Y 璇存槑锛氬晢鎴风郴缁熷唴閮ㄧ殑鍟嗗鍗曞彿锛岃姹傛鍙傛暟鍙兘鐢辨暟瀛椼�佸ぇ灏忓啓瀛楁瘝缁勬垚锛屽湪鍟嗘埛绯荤粺鍐呴儴鍞竴 */
+ @SerializedName("out_bill_no")
+ private String outBillNo;
+
+ /** 鍟嗗杞处璁㈠崟鍙� Y 璇存槑锛氬晢瀹惰浆璐﹁鍗曠殑涓婚敭锛屽敮涓�瀹氫箟姝よ祫婧愮殑鏍囪瘑 */
+ @SerializedName("transfer_bill_no")
+ private String transferBillNo;
+
+ /** 鍟嗘埛appid Y 璇存槑锛氱敵璇峰晢鎴峰彿鐨刟ppid鎴栧晢鎴峰彿缁戝畾鐨刟ppid锛堜紒涓氬彿corpid鍗充负姝ppid锛� */
+ @SerializedName("appid")
+ private String appid;
+
+ /** 鍗曟嵁鐘舵�� Y 璇存槑锛氬崟鎹姸鎬� */
+ @SerializedName("state")
+ private String state;
+
+ /** 杞处閲戦 Y 璇存槑锛氳浆璐﹂噾棰濆崟浣嶄负鈥滃垎鈥濄��*/
+ @SerializedName("transfer_amount")
+ private Integer transferAmount;
+
+ /** 杞处澶囨敞 Y 璇存槑锛氳浆璐﹀娉紝鐢ㄦ埛鏀舵鏃跺彲瑙佽澶囨敞淇℃伅锛孶TF8缂栫爜锛屾渶澶氬厑璁�32涓瓧绗︺��*/
+ @SerializedName("transfer_remark")
+ private String transferRemark;
+
+ /** 澶辫触鍘熷洜 N 璇存槑锛氳鍗曞凡澶辫触鎴栬�呭凡閫�璧勯噾鏃讹紝杩斿洖澶辫触鍘熷洜銆� */
+ @SerializedName("fail_reason")
+ private String failReason;
+
+ /** 鏀舵鐢ㄦ埛OpenID Y 璇存槑锛氬晢鎴稟ppID涓嬶紝鏌愮敤鎴风殑OpenID */
+ @SerializedName("openid")
+ private String openid;
+
+ /** 鏀舵鐢ㄦ埛濮撳悕 N 璇存槑锛氭敹娆炬柟鐪熷疄濮撳悕銆傞渶瑕佸姞瀵嗕紶鍏ワ紝鏀寔鏍囧噯RSA绠楁硶鍜屽浗瀵嗙畻娉曪紝鍏挜鐢卞井淇′晶鎻愪緵銆�
+ 杞处閲戦 >= 2,000鍏冩椂锛岃绗旀槑缁嗗繀椤诲~鍐�
+ 鑻ュ晢鎴蜂紶鍏ユ敹娆剧敤鎴峰鍚嶏紝寰俊鏀粯浼氭牎楠屾敹娆剧敤鎴蜂笌杈撳叆濮撳悕鏄惁涓�鑷达紝骞舵彁渚涚數瀛愬洖鍗� */
+ @SerializedName("user_name")
+ private String userName;
+
+ /** 鍗曟嵁鍒涘缓鏃堕棿 N 璇存槑锛氬崟鎹彈鐞嗘垚鍔熸椂杩斿洖锛屾寜鐓т娇鐢╮fc3339鎵�瀹氫箟鐨勬牸寮忥紝鏍煎紡涓簓yyy-MM-DDThh:mm:ss+TIMEZONE */
+ @SerializedName("create_time")
+ private String createTime;
+
+ /** 鏈�鍚庝竴娆$姸鎬佸彉鏇存椂闂� N 璇存槑锛氬崟鎹渶鍚庢洿鏂版椂闂达紝鎸夌収浣跨敤rfc3339鎵�瀹氫箟鐨勬牸寮忥紝鏍煎紡涓簓yyy-MM-DDThh:mm:ss+TIMEZONE */
+ @SerializedName("update_time")
+ private String updateTime;
+
+ public String getMchId() {
+ return mchId;
+ }
+
+ public void setMchId(String mchId) {
+ this.mchId = mchId;
+ }
+
+ public String getOutBillNo() {
+ return outBillNo;
+ }
+
+ public void setOutBillNo(String outBillNo) {
+ this.outBillNo = outBillNo;
+ }
+
+ public String getTransferBillNo() {
+ return transferBillNo;
+ }
+
+ public void setTransferBillNo(String transferBillNo) {
+ this.transferBillNo = transferBillNo;
+ }
+
+ public String getAppid() {
+ return appid;
+ }
+
+ public void setAppid(String appid) {
+ this.appid = appid;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public Integer getTransferAmount() {
+ return transferAmount;
+ }
+
+ public void setTransferAmount(Integer transferAmount) {
+ this.transferAmount = transferAmount;
+ }
+
+ public String getTransferRemark() {
+ return transferRemark;
+ }
+
+ public void setTransferRemark(String transferRemark) {
+ this.transferRemark = transferRemark;
+ }
+
+ public String getFailReason() {
+ return failReason;
+ }
+
+ public void setFailReason(String failReason) {
+ this.failReason = failReason;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(String updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null || getClass() != o.getClass()) return false;
+ TransferDetailEntityNew that = (TransferDetailEntityNew) o;
+ return Objects.equals(mchId, that.mchId) && Objects.equals(outBillNo, that.outBillNo) && Objects.equals(transferBillNo, that.transferBillNo) && Objects.equals(appid, that.appid) && Objects.equals(state, that.state) && Objects.equals(transferAmount, that.transferAmount) && Objects.equals(transferRemark, that.transferRemark) && Objects.equals(failReason, that.failReason) && Objects.equals(openid, that.openid) && Objects.equals(userName, that.userName) && Objects.equals(createTime, that.createTime) && Objects.equals(updateTime, that.updateTime);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mchId, outBillNo, transferBillNo, appid, state, transferAmount, transferRemark, failReason, openid, userName, createTime, updateTime);
+ }
+
+ @Override
+ public String toString() {
+ return "TransferDetailEntityNew{" +
+ "mchId='" + mchId + '\'' +
+ ", outBillNo='" + outBillNo + '\'' +
+ ", transferBillNo='" + transferBillNo + '\'' +
+ ", appid='" + appid + '\'' +
+ ", state='" + state + '\'' +
+ ", transferAmount=" + transferAmount +
+ ", transferRemark='" + transferRemark + '\'' +
+ ", failReason='" + failReason + '\'' +
+ ", openid='" + openid + '\'' +
+ ", userName='" + userName + '\'' +
+ ", createTime='" + createTime + '\'' +
+ ", updateTime='" + updateTime + '\'' +
+ '}';
+ }
+
+ public TransferDetailEntityNew cloneWithCipher(PrivacyDecryptor encryptor) {
+ TransferDetailEntityNew copy = new TransferDetailEntityNew();
+ copy.mchId = mchId;
+ copy.outBillNo = outBillNo;
+ copy.transferBillNo = transferBillNo;
+ copy.appid = appid;
+ copy.state = state;
+ copy.transferAmount = transferAmount;
+ copy.transferRemark = transferRemark;
+ copy.failReason = failReason;
+ copy.openid = openid;
+ if (userName != null && !userName.isEmpty()) {
+ copy.userName = encryptor.decrypt(userName);
+ }
+ copy.createTime = createTime;
+ copy.updateTime = updateTime;
+ return copy;
+ }
+}
+
diff --git a/server/services/src/main/java/com/doumee/config/wx/TransferToUser.java b/server/services/src/main/java/com/doumee/config/wx/TransferToUser.java
index af0b96e..15895e4 100644
--- a/server/services/src/main/java/com/doumee/config/wx/TransferToUser.java
+++ b/server/services/src/main/java/com/doumee/config/wx/TransferToUser.java
@@ -29,12 +29,20 @@
public static void main(String[] args) {
// TODO: 璇峰噯澶囧晢鎴峰紑鍙戝繀瑕佸弬鏁帮紝鍙傝�冿細https://pay.weixin.qq.com/doc/v3/merchant/4013070756
+// TransferToUser client = new TransferToUser(
+// "1229817002", // 鍟嗘埛鍙凤紝鏄敱寰俊鏀粯绯荤粺鐢熸垚骞跺垎閰嶇粰姣忎釜鍟嗘埛鐨勫敮涓�鏍囪瘑绗︼紝鍟嗘埛鍙疯幏鍙栨柟寮忓弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013070756
+// "3FE90C2F3D40A56E1C51926F31B8A8D22426CCE0", // 鍟嗘埛API璇佷功搴忓垪鍙凤紝濡備綍鑾峰彇璇峰弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013053053
+// "d://wechatApiclient_key.pem", // 鍟嗘埛API璇佷功绉侀挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
+// "PUB_KEY_ID_0112298170022025071700291836000600", // 寰俊鏀粯鍏挜ID锛屽浣曡幏鍙栬鍙傝�� https://pay.weixin.qq.com/doc/v3/merchant/4013038816
+// "d://pub_key.pem" // 寰俊鏀粯鍏挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
+// );
+
TransferToUser client = new TransferToUser(
- "1229817002", // 鍟嗘埛鍙凤紝鏄敱寰俊鏀粯绯荤粺鐢熸垚骞跺垎閰嶇粰姣忎釜鍟嗘埛鐨勫敮涓�鏍囪瘑绗︼紝鍟嗘埛鍙疯幏鍙栨柟寮忓弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013070756
- "3FE90C2F3D40A56E1C51926F31B8A8D22426CCE0", // 鍟嗘埛API璇佷功搴忓垪鍙凤紝濡備綍鑾峰彇璇峰弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013053053
+ "1661772003", // 鍟嗘埛鍙凤紝鏄敱寰俊鏀粯绯荤粺鐢熸垚骞跺垎閰嶇粰姣忎釜鍟嗘埛鐨勫敮涓�鏍囪瘑绗︼紝鍟嗘埛鍙疯幏鍙栨柟寮忓弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013070756
+ "3C9A32FB6CD453FAAAF97F9737ECAEA9D6625727", // 鍟嗘埛API璇佷功搴忓垪鍙凤紝濡備綍鑾峰彇璇峰弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013053053
"d://wechatApiclient_key.pem", // 鍟嗘埛API璇佷功绉侀挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
- "PUB_KEY_ID_0112298170022025071700291836000600", // 寰俊鏀粯鍏挜ID锛屽浣曡幏鍙栬鍙傝�� https://pay.weixin.qq.com/doc/v3/merchant/4013038816
- "d://pub_key.pem" // 寰俊鏀粯鍏挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
+ "47E172124E73E8098A565E971064C20ACDE7C911", // 寰俊鏀粯鍏挜ID锛屽浣曡幏鍙栬鍙傝�� https://pay.weixin.qq.com/doc/v3/merchant/4013038816
+ "d://wechatpay_47E172124E73E8098A565E971064C20ACDE7C911.pem" // 寰俊鏀粯鍏挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
);
TransferToUserRequest request = new TransferToUserRequest();
@@ -42,10 +50,10 @@
request.outBillNo = "plfk2020042016";
request.transferSceneId = "1005";
request.openid = "oKKHU5IFKpss_DIbFX1lqghFJOEg";
- request.userName = client.encrypt("鏂芥棴杈�");
- request.transferAmount = 91L;
+// request.userName = client.encrypt("鏂芥棴杈�");
+ request.transferAmount = 10L;
request.transferRemark = "~~~";
- request.notifyUrl = "https://www.weixin.qq.com/wxpay/pay.php";
+// request.notifyUrl = "https://www.weixin.qq.com/wxpay/pay.php";
request.userRecvPerception = "鍔冲姟鎶ラ叕";
request.transferSceneReportInfos = new ArrayList<>();
{
@@ -118,6 +126,7 @@
public TransferToUserResponse run(TransferToUserRequest request,String name) {
String uri = PATH;
request.appid = WxMiniConfig.wxProperties.getSubAppId();
+// request.notifyUrl = WxMiniConfig.wxProperties.getWechatNotifyUrl();
request.transferSceneId = "1005";
request.userRecvPerception = "鍔冲姟鎶ラ叕";
if(request.transferAmount >= 30){
@@ -140,7 +149,7 @@
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
reqBuilder.addHeader("Accept", "application/json");
reqBuilder.addHeader("Wechatpay-Serial", WxMiniConfig.wxProperties.getWechatPayPublicKeyId());
- reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(WxMiniConfig.wxProperties.getMchId(),
+ reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(WxMiniConfig.wxProperties.getSubMchId(),
WxMiniConfig.wxProperties.getWechatSerialNumer(),
WXPayUtility.loadPrivateKeyFromPath(WxMiniConfig.wxProperties.getWechatPrivateKeyPath()),
METHOD, uri, reqBody));
@@ -178,7 +187,7 @@
Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
reqBuilder.addHeader("Accept", "application/json");
reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
- reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(WxMiniConfig.wxProperties.getMchId(),
+ reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(WxMiniConfig.wxProperties.getSubMchId(),
WxMiniConfig.wxProperties.getWechatSerialNumer(),
WXPayUtility.loadPrivateKeyFromPath(WxMiniConfig.wxProperties.getWechatPrivateKeyPath()),
METHOD, uri, null));
diff --git a/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java b/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java
index e0b82bb..08bf046 100644
--- a/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java
+++ b/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java
@@ -139,13 +139,20 @@
public void load_transferToUser()
{
TransferToUser transferToUser = new TransferToUser(
- StringUtils.trimToNull(wxPayProperties.getMchId()), //鍟嗘埛id
+ StringUtils.trimToNull(wxPayProperties.getSubMchId()), //鍟嗘埛id
StringUtils.trimToNull(wxPayProperties.getWechatSerialNumer()), //鍟嗘埛API璇佷功搴忓垪鍙凤紝濡備綍鑾峰彇璇峰弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013053053
StringUtils.trimToNull(wxPayProperties.getWechatPrivateKeyPath()), // 鍟嗘埛API璇佷功绉侀挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
StringUtils.trimToNull(wxPayProperties.getWechatPayPublicKeyId()), // 寰俊鏀粯鍏挜ID锛屽浣曡幏鍙栬鍙傝�� https://pay.weixin.qq.com/doc/v3/merchant/4013038816
StringUtils.trimToNull(wxPayProperties.getWechatPubKeyPath()) // 寰俊鏀粯鍏挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
);
+// TransferToUser client = new TransferToUser(
+// "1229817002", // 鍟嗘埛鍙凤紝鏄敱寰俊鏀粯绯荤粺鐢熸垚骞跺垎閰嶇粰姣忎釜鍟嗘埛鐨勫敮涓�鏍囪瘑绗︼紝鍟嗘埛鍙疯幏鍙栨柟寮忓弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013070756
+// "3FE90C2F3D40A56E1C51926F31B8A8D22426CCE0", // 鍟嗘埛API璇佷功搴忓垪鍙凤紝濡備綍鑾峰彇璇峰弬鑰� https://pay.weixin.qq.com/doc/v3/merchant/4013053053
+// "d://wechatApiclient_key.pem", // 鍟嗘埛API璇佷功绉侀挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
+// "PUB_KEY_ID_0112298170022025071700291836000600", // 寰俊鏀粯鍏挜ID锛屽浣曡幏鍙栬鍙傝�� https://pay.weixin.qq.com/doc/v3/merchant/4013038816
+// "d://pub_key.pem" // 寰俊鏀粯鍏挜鏂囦欢璺緞锛屾湰鍦版枃浠惰矾寰�
+// );
this.transferToUser = transferToUser;
}
diff --git a/server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java b/server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java
index b9d5af5..08ba1cb 100644
--- a/server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java
+++ b/server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java
@@ -68,5 +68,9 @@
private String wechatPayPublicKeyId; // 寰俊鏀粯鍏挜ID
private String wechatPubKeyPath; //寰俊鏀粯鍏挜鏂囦欢璺緞
private String wechatPrivateKeyPath;
+ private String wechatNotifyUrl;
+// private String wechatApiV3Key;
+// private String wechatPlatformPubKeyPath;
+
}
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index 7e8743b..c2f64ee 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -359,9 +359,9 @@
@Getter
public enum RevenueType {
- YGD_INCOME( 0, "鐢ㄥ伐鍗曟敹鍏�","鐢ㄥ伐鍗曟敹鍏�" ,0),
- HYD_INCOME( 1, "璐ц繍鍗曟敹鍏�","璐ц繍鍗曟敹鍏�" ,0),
- GCD_INCOME(2, "渚涢鍗曟敹鍏�","渚涢鍗曟敹鍏�" ,0),
+ YGD_INCOME( 0, "鐢ㄥ伐鍗曟敹鍏�","鐢ㄥ伐鍗�" ,0),
+ HYD_INCOME( 1, "璐ц繍鍗曟敹鍏�","璐ц繍鍗�" ,0),
+ GCD_INCOME(2, "渚涢鍗曟敹鍏�","渚涢鍗�" ,0),
WITHDRAW_APPLY(3, "鎻愮幇鐢宠","鎻愮幇鐢宠" ,0),
REFUND( 4, "鎻愮幇鐢宠閫�鍥�","鎻愮幇鐢宠閫�鍥�" ,0)
;
@@ -385,6 +385,22 @@
}
return null;
}
+ public static String getName(int index) {
+ for (RevenueType c : RevenueType.values()) {
+ if (c.getKey() == index) {
+ return c.getName();
+ }
+ }
+ return null;
+ }
+ public static String getInfo(int index) {
+ for (RevenueType c : RevenueType.values()) {
+ if (c.getKey() == index) {
+ return c.getInfo();
+ }
+ }
+ return null;
+ }
public static String getObjName(int index) {
for (RevenueType c : RevenueType.values()) {
if (c.getKey() == index) {
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java b/server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java
index 82fda4b..9e29c9d 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java
@@ -116,9 +116,7 @@
@ExcelColumn(name="璁よ瘉瀹℃壒澶囨敞")
private String auditRemark;
- @ApiModelProperty(value = "鍥剧墖鍓嶇紑")
- @TableField(exist = false)
- private String prefix;
+
@ApiModelProperty(value = "瀹℃牳浜哄鍚�")
@TableField(exist = false)
private String editorName;
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
index a3f0a7b..cd3435a 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -220,6 +220,9 @@
@ApiModelProperty(value = "杞﹁締瑙勬牸", example = "1")
private String carUnit;
+ @ApiModelProperty(value = "涓夋柟鏀粯璁㈠崟鍙�", example = "1")
+ private String outTradeNo;
+
@ApiModelProperty(value = "鍥剧墖")
@TableField(exist = false)
private List<Multifile> multifileList;
@@ -242,7 +245,7 @@
@TableField(exist = false)
private List<CateringDTO> cateringDTOList;
- @ApiModelProperty(value = "绉诲姩绔敤鎴�", hidden = true)
+ @ApiModelProperty(value = "绉诲姩绔敤鎴�")
@TableField(exist = false)
private Member member;
@@ -329,5 +332,38 @@
@TableField(exist = false)
private Date doneTimeEnd;
+ @ApiModelProperty(value = "鎺掑簭鏂瑰紡锛�0=鏈�鏂板彂甯�;1=璺濈浼樺厛;2=浠锋牸鍊掑簭", example = "1")
+ @TableField(exist = false)
+ private Integer sortType;
+
+ @ApiModelProperty(value = "鎺ュ崟鏂硅瘎鍒�")
+ @TableField(exist = false)
+ private double score;
+
+ @ApiModelProperty(value = "鎺ュ崟閲�")
+ @TableField(exist = false)
+ private Long receiveNum;
+
+ @ApiModelProperty(value = "鍙戝崟閲�")
+ @TableField(exist = false)
+ private Long publishNum;
+
+ @ApiModelProperty(value = "鍙戝崟鏂瑰ご鍍�")
+ @TableField(exist = false)
+ private String releaseCoverImage;
+
+ @ApiModelProperty(value = "鎺ュ崟鏂瑰ご鍍�")
+ @TableField(exist = false)
+ private String acceptCoverImage;
+
+ @ApiModelProperty(value = "缁忓害", example = "1")
+ @TableField(exist = false)
+ private BigDecimal queryLat;
+
+ @ApiModelProperty(value = "绾害", example = "1")
+ @TableField(exist = false)
+ private BigDecimal queryLgt;
+
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/dto/ReusePayDTO.java b/server/services/src/main/java/com/doumee/dao/dto/ReusePayDTO.java
new file mode 100644
index 0000000..7c35ffb
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/dto/ReusePayDTO.java
@@ -0,0 +1,27 @@
+package com.doumee.dao.dto;
+
+import com.doumee.dao.business.model.Member;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("閲嶆柊鏀粯")
+public class ReusePayDTO {
+
+ @ApiModelProperty(value = "璁㈠崟涓婚敭")
+ private Integer orderId;
+
+ @ApiModelProperty(value = "鏀粯閲戦 鍗曚綅锛氬垎")
+ private Long amount;
+
+ @ApiModelProperty(hidden = true)
+ private Member member;
+
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/OrdersService.java b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
index 283b40f..0da39ec 100644
--- a/server/services/src/main/java/com/doumee/service/business/OrdersService.java
+++ b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -5,10 +5,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Orders;
-import com.doumee.dao.dto.CommentDTO;
-import com.doumee.dao.dto.ConfirmUpdOrderDTO;
-import com.doumee.dao.dto.DoneOrderDTO;
-import com.doumee.dao.dto.UpdOrderDataDTO;
+import com.doumee.dao.dto.*;
import com.doumee.dao.vo.OrderReleaseVO;
import com.wechat.pay.java.service.refund.model.RefundNotification;
@@ -116,7 +113,7 @@
void receiveCancelOrder(Integer orderId,Member member);
- Object doneOrder(DoneOrderDTO doneOrderDTO);
+ OrderReleaseVO doneOrder(DoneOrderDTO doneOrderDTO);
void comment(CommentDTO commentDTO);
@@ -144,4 +141,6 @@
void autoGrabOrders();
void initializeCode();
+
+ OrderReleaseVO reusePay(ReusePayDTO reusePayDTO);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
index 34ae3da..fb5d5b4 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.wx.SendWxMessage;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
@@ -23,6 +24,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.annotations.ApiModelProperty;
+import me.chanjar.weixin.common.error.WxErrorException;
import nonapi.io.github.classgraph.json.Id;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
@@ -55,9 +57,9 @@
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
public Integer create(IdentityInfo identityInfo) {
if(Objects.isNull(identityInfo)
- || Objects.isNull(identityInfo.getType())
- || Objects.isNull(identityInfo.getMemberId())
- || Objects.isNull(identityInfo.getAuthType())
+ || Objects.isNull(identityInfo.getType())
+ || Objects.isNull(identityInfo.getMemberId())
+ || Objects.isNull(identityInfo.getAuthType())
|| StringUtils.isEmpty(identityInfo.getLinkName())
|| StringUtils.isEmpty(identityInfo.getTelephone())
|| StringUtils.isEmpty(identityInfo.getLocation())
@@ -71,23 +73,28 @@
){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
- //鏌ヨ鐢ㄦ埛鏄惁宸插瓨鍦ㄥ綋鍓嶈韩浠�
- if(identityInfoMapper.selectCount(new QueryWrapper<IdentityInfo>().lambda().eq(IdentityInfo::getDeleted,Constants.ZERO).eq(IdentityInfo::getMemberId,identityInfo.getMemberId())
- .eq(IdentityInfo::getType,identityInfo.getType()))>Constants.ZERO){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸插瓨鍦ㄨ韬唤璇峰埛鏂版煡鐪嬶紒");
- };
- identityInfo.setDeleted(Constants.ZERO);
- identityInfo.setCreateTime(new Date());
- identityInfo.setUpdateTime(identityInfo.getCreateTime());
- identityInfo.setAuditStatus(Constants.ONE);
- identityInfoMapper.insert(identityInfo);
+ if(Objects.nonNull(identityInfo.getId())){
+ this.updateById(identityInfo);
+ }else{
+ //鏌ヨ鐢ㄦ埛鏄惁宸插瓨鍦ㄥ綋鍓嶈韩浠�
+ if(identityInfoMapper.selectCount(new QueryWrapper<IdentityInfo>().lambda()
+ .eq(IdentityInfo::getDeleted,Constants.ZERO)
+ .eq(IdentityInfo::getMemberId,identityInfo.getMemberId())
+ .eq(IdentityInfo::getType,identityInfo.getType()))>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸插瓨鍦ㄨ韬唤璇峰埛鏂版煡鐪嬶紒");
+ };
+ identityInfo.setDeleted(Constants.ZERO);
+ identityInfo.setCreateTime(new Date());
+ identityInfo.setUpdateTime(identityInfo.getCreateTime());
+ identityInfo.setAuditStatus(Constants.ONE);
+ identityInfoMapper.insert(identityInfo);
- memberMapper.update(new UpdateWrapper<Member>().lambda()
- .set(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO),Member::getWorkerIdentity,Constants.ONE)
- .set(Constants.equalsInteger(identityInfo.getType(),Constants.ONE),Member::getDriverIdentity,Constants.ONE)
- .set(Constants.equalsInteger(identityInfo.getType(),Constants.TWO),Member::getChefIdentity,Constants.ONE)
- .eq(Member::getId,identityInfo.getMemberId()));
-
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .set(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO),Member::getWorkerIdentity,Constants.ONE)
+ .set(Constants.equalsInteger(identityInfo.getType(),Constants.ONE),Member::getDriverIdentity,Constants.ONE)
+ .set(Constants.equalsInteger(identityInfo.getType(),Constants.TWO),Member::getChefIdentity,Constants.ONE)
+ .eq(Member::getId,identityInfo.getMemberId()));
+ }
return identityInfo.getId();
}
@@ -193,24 +200,50 @@
@Override
public IdentityInfo findById(Integer id) {
- IdentityInfo identityInfo = identityInfoMapper.selectById(id);
- //缂哄け鍓嶇紑
- identityInfo.setPrefix("");
- return identityInfo;
+ IdentityInfo model = identityInfoMapper.selectById(id);
+ String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INENTITY_FILES).getCode();
+ model.setImgList(new ArrayList<>());
+ if(StringUtils.isNotBlank(model.getImg1())){
+ model.getImgList().add(path + model.getImg1());
+ }
+ if(StringUtils.isNotBlank(model.getImg2())){
+ model.getImgList().add(path + model.getImg2());
+ }
+ if(StringUtils.isNotBlank(model.getImg3())) {
+ model.getImgList().add(path + model.getImg3());
+ }
+ if(StringUtils.isNotBlank(model.getImg4())){
+ model.getImgList().add(path + model.getImg4());
+ }
+ return model;
}
@Override
public IdentityInfo findByMemberType(Integer type,Integer memberId){
- IdentityInfo identityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+ IdentityInfo model = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
.eq(IdentityInfo::getMemberId,memberId).eq(IdentityInfo::getType,type));
- if(Objects.nonNull(identityInfo)){
- //缂哄け鍓嶇紑
- identityInfo.setPrefix("");
+ if(Objects.nonNull(model)){
+ String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INENTITY_FILES).getCode();
+ model.setImgList(new ArrayList<>());
+ if(StringUtils.isNotBlank(model.getImg1())){
+ model.getImgList().add(path + model.getImg1());
+ }
+ if(StringUtils.isNotBlank(model.getImg2())){
+ model.getImgList().add(path + model.getImg2());
+ }
+ if(StringUtils.isNotBlank(model.getImg3())) {
+ model.getImgList().add(path + model.getImg3());
+ }
+ if(StringUtils.isNotBlank(model.getImg4())){
+ model.getImgList().add(path + model.getImg4());
+ }
}else{
- identityInfo = new IdentityInfo();
+ model = new IdentityInfo();
}
- return identityInfo;
+ return model;
}
@@ -385,6 +418,9 @@
}
+ @Autowired
+ private SendWxMessage sendWxMessage;
+
@Override
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
public void audit(AuditDTO auditDTO){
@@ -403,6 +439,13 @@
if(!Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.ONE)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸插鎵癸紝璇峰嬁閲嶅鎿嶄綔");
}
+ Member member = memberMapper.selectById(identityInfo.getMemberId());
+ if(Objects.isNull(member)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ identityInfo.setAuditStatus(auditDTO.getAuditStatus());
+ identityInfo.setAuditRemark(auditDTO.getAuditRemark());
+ identityInfo.setAuditTime(new Date());
Date date = new Date();
identityInfoMapper.update(new UpdateWrapper<IdentityInfo>().lambda()
.set(IdentityInfo::getAuditStatus, auditDTO.getAuditStatus() )
@@ -422,5 +465,16 @@
.eq(Member::getId,identityInfo.getMemberId())
);
+ try{
+ //鍙戦�佸井淇¢�氱煡
+ if(StringUtils.isNotBlank(member.getOpenid())){
+ sendWxMessage.identityInfoMessage(member.getOpenid(),identityInfo);
+ }
+ }catch (WxErrorException wxErrorException){
+
+ }
+
+
+
}
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
index a640402..dc8af9f 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -82,6 +82,9 @@
private WithdrawalOrdersMapper withdrawalOrdersMapper;
@Autowired
+ private ReceiveWeightMapper receiveWeightMapper;
+
+ @Autowired
private WxMiniUtilService wxMiniUtilService;
@Resource
@@ -117,6 +120,7 @@
//鐢ㄩ璁㈠崟
if(Constants.equalsInteger(orders.getType(),Constants.TWO)){
orders.setStatus(Constants.ordersStatus.waitPay.getKey());
+ orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
//鍞よ捣鏀粯涓氬姟
objects = this.getWxPayResponse(orders,orders.getMember().getOpenid());
orderReleaseVO.setObject(objects);
@@ -175,10 +179,10 @@
Payer payer = new Payer();
payer.setSubOpenid(openid);
request.setPayer(payer);
- request.setOutTradeNo(orders.getCode());
+ request.setOutTradeNo(orders.getOutTradeNo());
request.setNotifyUrl(WxMiniConfig.wxProperties.getNotifyUrl());//杩欎釜鍥炶皟url蹇呴』鏄痟ttps寮�澶寸殑
Amount amount = new Amount();
- amount.setTotal(orders.getEstimatedAccount().intValue());
+ amount.setTotal(1);//orders.getEstimatedAccount().intValue());
request.setAmount(amount);
// PrepayResponse res = WxMiniConfig.wxPayService.prepay(request);
// 璺熶箣鍓嶄笅鍗曠ず渚嬩竴鏍凤紝濉厖棰勪笅鍗曞弬鏁�
@@ -219,11 +223,10 @@
|| Objects.isNull(orders.getStartDate())
|| Objects.isNull(orders.getEndDate())
|| StringUtil.isBlank(orders.getLocation())
- || (!Constants.equalsInteger(Constants.ONE,orders.getType())&&StringUtil.isBlank(orders.getLocationRemark()))
|| StringUtil.isBlank(orders.getLinkPhone())
|| Objects.isNull(orders.getLat())
|| Objects.isNull(orders.getLgt())
- || Objects.isNull(orders.getCategoryId())
+ || (!Constants.equalsInteger(orders.getType(),Constants.TWO) && Objects.isNull(orders.getCategoryId()))
|| (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Objects.isNull(orders.getWorkType()))
|| Objects.isNull(orders.getPriceNum1())
|| Objects.isNull(orders.getEstimatedAccount())
@@ -401,28 +404,8 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus()));
+ this.getPriceUnit(orders);
- if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
- if(Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)){
- orders.setPriceUnit("鍏�/鏂�");
- }else if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)){
- orders.setPriceUnit("鍏�/浜�/澶�");
- }else{
- if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
- orders.setPriceUnit("鍏�/浜�/澶�");
- }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){
- orders.setPriceUnit("鍏�/浜�/灏忔椂");
- }else{
- orders.setPriceUnit("鍏�/鏂�");
- }
- }
- }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
- if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
- orders.setPriceUnit("鍏�/澶�");
- }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){
- orders.setPriceUnit("鍏�/娆�");
- }
- }
//闄勪欢淇℃伅
List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,orders.getId())
.eq(Multifile::getIsdeleted,Constants.ZERO).eq(Multifile::getObjType,Constants.ONE).orderByAsc(Multifile::getId));
@@ -453,6 +436,29 @@
return orders;
}
+ public void getPriceUnit(Orders orders){
+ if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+ if(Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)){
+ orders.setPriceUnit("鍏�/鏂�");
+ }else if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)){
+ orders.setPriceUnit("鍏�/浜�/澶�");
+ }else{
+ if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
+ orders.setPriceUnit("鍏�/浜�/澶�");
+ }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){
+ orders.setPriceUnit("鍏�/浜�/灏忔椂");
+ }else{
+ orders.setPriceUnit("鍏�/鏂�");
+ }
+ }
+ }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
+ if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
+ orders.setPriceUnit("鍏�/澶�");
+ }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){
+ orders.setPriceUnit("鍏�/娆�");
+ }
+ }
+ }
@Override
public Orders findOne(Orders orders) {
QueryWrapper<Orders> wrapper = new QueryWrapper<>(orders);
@@ -733,6 +739,7 @@
if(
(Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO ))
|| Constants.equalsInteger(orders.getType(),Constants.ONE)
+ || Constants.equalsInteger(orders.getType(),Constants.TWO)
){
orders.setPriceNum2(Constants.ONE);
}else{
@@ -798,9 +805,7 @@
Constants.OrdersLog ordersLog = Constants.OrdersLog.UPD_DISAGREE;
this.saveOrderLog(orders,ordersLog,
ordersLog.getInfo(),confirmUpdOrderDTO.getMember().getId(),null);
-
//TODO 鍙戦�佷笉鍚屾剰鍙樻洿閫氱煡
-
}
}
@@ -960,7 +965,7 @@
*/
@Override
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
- public Object doneOrder(DoneOrderDTO doneOrderDTO){
+ public OrderReleaseVO doneOrder(DoneOrderDTO doneOrderDTO){
if(Objects.isNull(doneOrderDTO)||Objects.isNull(doneOrderDTO.getOrderId())){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
@@ -977,7 +982,8 @@
if(!Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
}
- orders.setPayAccount(doneOrderDTO.getAmount());
+ OrderReleaseVO orderReleaseVO = new OrderReleaseVO();
+ orderReleaseVO.setId(orders.getId());
Object object = null;
//鐢ㄩ璁㈠崟
if(!Constants.equalsInteger(orders.getType(),Constants.TWO)){
@@ -985,20 +991,81 @@
//鎻愭垚閲戦
Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue());
orders.setReceiveAccount(orders.getPayAccount() - tcje);
+ orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
ordersMapper.updateById(orders);
//鍞よ捣鏀粯涓氬姟
object = this.getWxPayResponse(orders,orders.getMember().getOpenid());
+ orderReleaseVO.setObject(object);
}else{
orders.setStatus(Constants.ordersStatus.done.getKey());
+ orders.setFinishTime(new Date());
+ ordersMapper.updateById(orders);
+
+ Member member = memberMapper.selectById(orders.getAcceptMemberId())
+
+ //瀛樺偍娴佹按璁板綍
+ MemberRevenue memberRevenue = new MemberRevenue();
+ memberRevenue.setCreateTime(new Date());
+ memberRevenue.setMemberId(orders.getAcceptMemberId());
+ memberRevenue.setType(orders.getType());
+ memberRevenue.setOptType(Constants.ONE);
+ memberRevenue.setBeforeAmount(member.getAmount());
+ memberRevenue.setAmount(orders.getReceiveAccount());
+ memberRevenue.setAfterAmount(member.getAmount() + orders.getReceiveAccount());
+ if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+ memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()) + "-" +
+ (Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)?"閲囨憳宸�":(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"鍒嗘嫞宸�":"鍖呰宸�")));
+ }else{
+ memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()));
+ }
+ memberRevenue.setObjId(orders.getId());
+ memberRevenue.setObjType(Constants.ZERO);
+ memberRevenue.setStatus(Constants.ZERO);
+ memberRevenueMapper.insert(memberRevenue);
+
//鏃ュ織瀛樺偍
Constants.OrdersLog ordersLog = Constants.OrdersLog.DONE;
this.saveOrderLog(orders,ordersLog,
ordersLog.getInfo(),doneOrderDTO.getMember().getId(),null);
}
- return object;
+ return orderReleaseVO;
}
+
+ @Override
+ public OrderReleaseVO reusePay(ReusePayDTO reusePayDTO){
+ if(Objects.isNull(reusePayDTO)||Objects.isNull(reusePayDTO.getOrderId())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ Orders orders = ordersMapper.selectById(reusePayDTO.getOrderId());
+ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!Constants.equalsInteger(orders.getType(),Constants.TWO)&&Objects.isNull(reusePayDTO.getAmount())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+
+ if(!((( Constants.equalsInteger(orders.getType(),Constants.TWO) && Constants.equalsInteger(orders.getStatus(),Constants.ZERO) )
+ || ( !Constants.equalsInteger(orders.getType(),Constants.TWO) && Constants.equalsInteger(orders.getStatus(),Constants.THREE) ))
+ && Constants.equalsInteger(orders.getPayStatus(),Constants.ZERO) )){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆");
+ }
+ OrderReleaseVO orderReleaseVO = new OrderReleaseVO();
+ if(!Constants.equalsInteger(orders.getType(),Constants.TWO)){
+ orders.setPayAccount(reusePayDTO.getAmount());
+ //鎻愭垚閲戦
+ Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue());
+ orders.setReceiveAccount(orders.getPayAccount() - tcje);
+ }
+ orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
+ ordersMapper.updateById(orders);
+ //鍞よ捣鏀粯涓氬姟
+ Object object = this.getWxPayResponse(orders,orders.getMember().getOpenid());
+ orderReleaseVO.setObject(object);
+ orderReleaseVO.setId(orders.getId());
+ return orderReleaseVO;
+ }
@Override
@@ -1083,20 +1150,16 @@
.set(Orders::getCommentType,Constants.ZERO)
.eq(Orders::getId,orders.getId())
);
-
memberMapper.update(new UpdateWrapper<Member>().lambda()
.set(Member::getScore," ( total_score +" + commentDTO.getLevel() + " ) / (score_order_num + 1 )")
.set(Member::getTotalScore," total_score +" + commentDTO.getLevel())
.set(Member::getScoreOrderNum," score_order_num + 1 " ).eq(Member::getId,orders.getAcceptMemberId())
);
-
//鏃ュ織瀛樺偍
Constants.OrdersLog ordersLog = Constants.OrdersLog.COMMENT;
this.saveOrderLog(orders,ordersLog,
ordersLog.getInfo(),orders.getAcceptMemberId(),null);
}
-
-
/**
@@ -1117,7 +1180,7 @@
//澶勭悊鏀粯瀹屾垚閫昏緫
ordersMapper.update(new UpdateWrapper<Orders>().lambda()
.set(Orders::getUpdateTime,new Date())
- .set(Orders::getStatus,Constants.ordersStatus.wait)
+ .set(Orders::getStatus,Constants.ordersStatus.wait.getKey())
.set(Orders::getPayStatus,Constants.ONE)
.set(Orders::getPayTime,new Date())
.set(Orders::getPayMethod,Constants.ZERO)
@@ -1157,6 +1220,12 @@
memberRevenue.setBeforeAmount(member.getAmount());
memberRevenue.setAmount(orders.getReceiveAccount());
memberRevenue.setAfterAmount(member.getAmount() + orders.getReceiveAccount());
+ if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+ memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()) + "-" +
+ (Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)?"閲囨憳宸�":(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"鍒嗘嫞宸�":"鍖呰宸�")));
+ }else{
+ memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()));
+ }
memberRevenue.setObjId(orders.getId());
memberRevenue.setObjType(Constants.ZERO);
memberRevenue.setStatus(Constants.ZERO);
@@ -1175,6 +1244,7 @@
ordersLog.getInfo(),orders.getReleaseMemberId(),null);
//TODO 閫氱煡鎺ュ崟鏂� 娆鹃」宸插埌璐�
+
}
}
return ("澶勭悊鎴愬姛!");
@@ -1187,73 +1257,124 @@
MPJLambdaWrapper<Orders> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
Orders model = pageWrap.getModel();
+ if(Objects.isNull(model)
+ || Objects.isNull(model.getQueryLat())
+ || Objects.isNull(model.getQueryLgt())
+ || Objects.isNull(model.getQueryMyOrderType())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ BigDecimal chefLat = model.getQueryLat();
+ BigDecimal chefLgt = model.getQueryLgt();
+ BigDecimal driverLat = model.getQueryLat();
+ BigDecimal driverLgt = model.getQueryLgt();
+ BigDecimal workerLat = model.getQueryLat();
+ BigDecimal workerLgt = model.getQueryLgt();
+ IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+ .eq(IdentityInfo::getMemberId,model.getMember().getId())
+ .eq(IdentityInfo::getType,Constants.ZERO)
+ .eq(IdentityInfo::getAuditStatus,Constants.TWO)
+ .last("limit 1")
+ );
+ if(Objects.nonNull(wokerIdentityInfo)){
+ workerLat = wokerIdentityInfo.getLat();
+ workerLgt = wokerIdentityInfo.getLgt();
+ }
+ IdentityInfo driverIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+ .eq(IdentityInfo::getMemberId,model.getMember().getId())
+ .eq(IdentityInfo::getType,Constants.ONE)
+ .eq(IdentityInfo::getAuditStatus,Constants.TWO)
+ .last("limit 1")
+ );
+ if(Objects.nonNull(driverIdentityInfo)){
+ driverLat = driverIdentityInfo.getLat();
+ driverLgt = driverIdentityInfo.getLgt();
+ }
+ IdentityInfo chefIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+ .eq(IdentityInfo::getMemberId,model.getMember().getId())
+ .eq(IdentityInfo::getType,Constants.TWO)
+ .eq(IdentityInfo::getAuditStatus,Constants.TWO)
+ .last("limit 1")
+ );
+ if(Objects.nonNull(chefIdentityInfo)){
+ chefLat = chefIdentityInfo.getLat();
+ chefLgt = chefIdentityInfo.getLgt();
+ }
queryWrapper.selectAll(Orders.class)
.select("c1.name",Orders::getCategoryName)
.select("c2.name",Orders::getTransportTypeName)
.leftJoin(" category c1 on t.category_id = c1.id ")
- .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id ");
+ .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id ")
+ .select(" case when T.LGT IS NULL OR T.LAT IS NULL THEN 0 " +
+ " when t.TYPE = 0 then CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+workerLgt+", "+workerLat+" )) /1000,DECIMAL(15,2)) " +
+ " when t.TYPE = 1 then CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+driverLgt+", "+driverLat+" )) /1000,DECIMAL(15,2)) " +
+ " else CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+chefLgt+", "+chefLat+" )) /1000,DECIMAL(15,2)) end " , Orders::getDistance)
+ .eq(Objects.nonNull(model.getType()),Orders::getType,model.getType());
if(Objects.nonNull(model.getQueryMyOrderType())){
if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ZERO)){
//鍙戝崟鏂� 鎴戠殑璁㈠崟
queryWrapper.eq(Orders::getReleaseMemberId,model.getMember().getId());
+ queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus,model.getStatus());
+ queryWrapper.orderByDesc(Orders::getCreateTime);
}else if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ONE)){
//鎺ュ崟鏂� 鎴戠殑璁㈠崟
queryWrapper.eq(Orders::getAcceptMemberId,model.getMember().getId());
+ queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus,model.getStatus());
+ queryWrapper.orderByDesc(Orders::getCreateTime);
}else{
+ //鏌ヨ鐢ㄦ埛鐨勬帴鍗曟潈閲�
+ ReceiveWeight receiveWeight = receiveWeightMapper.selectOne(new QueryWrapper<ReceiveWeight>().lambda().eq(ReceiveWeight::getDeleted,Constants.ZERO).apply(" RECEIVE_MIN < "+model.getMember().getReceiveNum()+" and RECEIVE_MAX > " + model.getMember().getReceiveNum()).last(" limit 1 "));
+ if(Objects.nonNull(receiveWeight)){
+ queryWrapper.apply(" DATE_ADD(t.CREATE_TIME, INTERVAL "+receiveWeight.getDelayTime()+" MINUTE) < now() ");
+ }
queryWrapper.eq(Orders::getStatus,Constants.ordersStatus.wait.getKey());
- //鎺ュ崟澶у巺
- queryWrapper.and(Constants.equalsInteger(model.getMember().getWorkerIdentity(),Constants.TWO)||Constants.equalsInteger(model.getMember().getDriverIdentity(),Constants.TWO)||Constants.equalsInteger(model.getMember().getChefIdentity(),Constants.TWO),i->
- i.eq(Constants.equalsInteger(model.getMember().getWorkerIdentity(),Constants.TWO),Orders::getType,Constants.ZERO)
- .or()
- .eq(Constants.equalsInteger(model.getMember().getDriverIdentity(),Constants.TWO),Orders::getType,Constants.ONE)
- .or()
- .eq(Constants.equalsInteger(model.getMember().getChefIdentity(),Constants.TWO),Orders::getType,Constants.TWO)
- );
-
- queryWrapper.apply(!(Constants.equalsInteger(model.getMember().getWorkerIdentity(),Constants.TWO)||Constants.equalsInteger(model.getMember().getDriverIdentity(),Constants.TWO)||Constants.equalsInteger(model.getMember().getChefIdentity(),Constants.TWO))," 1 = 2 "
- );
-
+ queryWrapper.ne(Orders::getReleaseMemberId,model.getMember().getId());
+ if(Objects.nonNull(model.getSortType())){
+ if(Constants.equalsInteger(model.getSortType(),Constants.ZERO)){
+ queryWrapper.orderByDesc(Orders::getCreateTime);
+ }else if(Constants.equalsInteger(model.getSortType(),Constants.ONE)){
+ queryWrapper.orderByAsc(" distance ");
+ }else{
+ queryWrapper.orderByDesc(Orders::getEstimatedAccount);
+ }
+ }
}
- }
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
- queryWrapper.orderByAsc(sortData.getProperty());
- }
- }
+ }
IPage<Orders> iPage = ordersMapper.selectJoinPage(page,Orders.class,queryWrapper);
- if(Objects.nonNull(model.getQueryMyOrderType())&&Constants.equalsInteger(model.getQueryMyOrderType(),Constants.TWO)){
- if(Constants.equalsInteger(model.getMember().getUseIdentity(),Constants.ONE)){
- model.getMember().setWorkerIdentityModel(
- identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
- .eq(IdentityInfo::getMemberId,model.getMember().getId())
- .eq(IdentityInfo::getType,Constants.ZERO)
- .eq(IdentityInfo::getAuditStatus,Constants.TWO)
- .last("limit 1")
- )
- );
- model.getMember().setDriverIdentityModel(
- identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
- .eq(IdentityInfo::getMemberId,model.getMember().getId())
- .eq(IdentityInfo::getType,Constants.ONE)
- .eq(IdentityInfo::getAuditStatus,Constants.TWO)
- .last("limit 1")
- )
- );
- model.getMember().setChefIdentityModel(
- identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
- .eq(IdentityInfo::getMemberId,model.getMember().getId())
- .eq(IdentityInfo::getType,Constants.TWO)
- .eq(IdentityInfo::getAuditStatus,Constants.TWO)
- .last("limit 1")
- )
- );
- }
- for (Orders orders:iPage.getRecords()) {
- this.getDistance(model.getMember(),orders);
- }
+ for (Orders orders:iPage.getRecords()) {
+ this.getPriceUnit(orders);
}
+// if(Objects.nonNull(model.getQueryMyOrderType())&&Constants.equalsInteger(model.getQueryMyOrderType(),Constants.TWO)){
+// if(Constants.equalsInteger(model.getMember().getUseIdentity(),Constants.ONE)){
+// model.getMember().setWorkerIdentityModel(
+// identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+// .eq(IdentityInfo::getMemberId,model.getMember().getId())
+// .eq(IdentityInfo::getType,Constants.ZERO)
+// .eq(IdentityInfo::getAuditStatus,Constants.TWO)
+// .last("limit 1")
+// )
+// );
+// model.getMember().setDriverIdentityModel(
+// identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+// .eq(IdentityInfo::getMemberId,model.getMember().getId())
+// .eq(IdentityInfo::getType,Constants.ONE)
+// .eq(IdentityInfo::getAuditStatus,Constants.TWO)
+// .last("limit 1")
+// )
+// );
+// model.getMember().setChefIdentityModel(
+// identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+// .eq(IdentityInfo::getMemberId,model.getMember().getId())
+// .eq(IdentityInfo::getType,Constants.TWO)
+// .eq(IdentityInfo::getAuditStatus,Constants.TWO)
+// .last("limit 1")
+// )
+// );
+// }
+// for (Orders orders:iPage.getRecords()) {
+// this.getDistance(model.getMember(),orders);
+// }
+// }
return PageData.from(iPage);
}
@@ -1309,28 +1430,36 @@
public Orders getDetail(Integer id,Integer userType) {
Orders orders = ordersMapper.selectJoinOne(Orders.class,new MPJLambdaWrapper<Orders>()
.selectAll(Orders.class)
+ .select(" m1.name " , Orders::getReleaseName)
+ .select(" m1.telephone " , Orders::getReleasePhone)
+ .select(" case when i.AUTH_TYPE = 0 then i.LINK_NAME else i.COMPANY_NAME end " , Orders::getAcceptName)
+ .select(" i.TELEPHONE " , Orders::getAcceptPhone)
.select("c1.name",Orders::getCategoryName)
.select("c2.name",Orders::getTransportTypeName)
+ .select(" m2.SCORE " , Orders::getScore)
+ .select(" m1.PUBLISH_NUM " , Orders::getPublishNum)
+ .select(" m2.RECEIVE_NUM " , Orders::getReceiveNum)
+ .select(" m1.COVER_IMAGE " , Orders::getReleaseCoverImage)
+ .select(" m2.COVER_IMAGE " , Orders::getAcceptCoverImage)
.leftJoin(" category c1 on t.category_id = c1.id ")
.leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id ")
+ .leftJoin("member m1 on t.RELEASE_MEMBER_ID = m1.id ")
+ .leftJoin("member m2 on t.ACCEPT_MEMBER_ID = m2.id ")
+ .leftJoin("identity_info i on m2.id = i.MEMBER_ID and i.TYPE = t.type and i.AUDIT_STATUS = 2 ")
+
.eq(Orders::getId,id)
);
if(Objects.isNull(orders)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
- if(Objects.nonNull(userType)){
- Member member = memberMapper.selectById(
- Constants.equalsInteger(userType,Constants.ZERO)?orders.getReleaseMemberId():orders.getAcceptMemberId()
- );
- if(Objects.nonNull(member)){
- if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getCoverImage())){
- //澶村儚淇℃伅
- String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
- +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode();
- member.setFullCoverImage(path + member.getCoverImage());
- }
- orders.setMember(member);
- }
+ //澶村儚淇℃伅
+ String coverPath = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode();
+ if(org.apache.commons.lang3.StringUtils.isNotBlank(orders.getReleaseCoverImage())){
+ orders.setReleaseCoverImage(coverPath + orders.getReleaseCoverImage());
+ }
+ if(org.apache.commons.lang3.StringUtils.isNotBlank(orders.getAcceptCoverImage())){
+ orders.setAcceptCoverImage(coverPath + orders.getAcceptCoverImage());
}
List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,orders.getId())
.eq(Multifile::getIsdeleted,Constants.ZERO).eq(Multifile::getObjType,Constants.ONE).orderByAsc(Multifile::getId));
@@ -1342,7 +1471,7 @@
}
orders.setMultifileList(multifileList);
}
-
+ orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus()));
return orders;
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
index 82c3236..ef8c562 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
@@ -1,6 +1,5 @@
package com.doumee.service.business.impl;
-import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.doumee.config.wx.TransferToUser;
import com.doumee.config.wx.WXPayUtility;
@@ -210,7 +209,6 @@
transferToUserRequest.outBillNo = withdrawalOrders.getOutBillNo();
transferToUserRequest.transferAmount = withdrawalDTO.getAmount();
transferToUserRequest.transferRemark = "鎻愮幇鐢宠";
-// transferToUserRequest.userName = member.getName();
try {
TransferToUser.TransferToUserResponse response = WxMiniConfig.transferToUser.run(transferToUserRequest,member.getName());
withdrawalOrders.setRemark(JSONObject.toJSONString(response));
@@ -231,6 +229,7 @@
memberRevenue.setAmount(withdrawalOrders.getAmount());
memberRevenue.setAfterAmount(member.getAmount() - withdrawalOrders.getAmount());
memberRevenue.setObjId(withdrawalOrders.getId());
+ memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()));
memberRevenue.setObjType(Constants.ONE);
memberRevenue.setDeleted(Constants.ZERO);
memberRevenue.setStatus(Constants.TWO);
diff --git a/server/services/src/main/resources/application-dev.yml b/server/services/src/main/resources/application-dev.yml
index add081e..c2f5827 100644
--- a/server/services/src/main/resources/application-dev.yml
+++ b/server/services/src/main/resources/application-dev.yml
@@ -85,14 +85,14 @@
pay:
#鏈嶅姟鍟�---------start-------
appId: wx48fd8faa35cc8277
- mchId: 1229817002 #1661770902
+ mchId: 1661770902
apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT
serialNumer: 368B835A194384FD583B83B77977B84127D2F655
mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
- # notifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxPayNotify
- # refundNotifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxRefundNotify
- notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify
- refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify
+ notifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxPayNotify
+ refundNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxRefundNotify
+# notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify
+# refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify
#keyPath: /usr/local/aliConfig/bike/apiclient_cert.p12
#privateCertPath: /usr/local/aliConfig/bike/apiclient_cert.pem
#privateKeyPath: /usr/local/aliConfig/bike/apiclient_key.pem
@@ -102,10 +102,14 @@
#鍟嗘埛淇℃伅
- wechatSerialNumer: 3FE90C2F3D40A56E1C51926F31B8A8D22426CCE0
- wechatPayPublicKeyId: PUB_KEY_ID_0112298170022025071700291836000600
- wechatPubKeyPath: d://pub_key.pem
- wechatPrivateKeyPath: d://wechatApiclient_key.pem
+ wechatSerialNumer: 3C9A32FB6CD453FAAAF97F9737ECAEA9D6625727
+ wechatPayPublicKeyId: 47E172124E73E8098A565E971064C20ACDE7C911 # PUB_KEY_ID_0116617720032025071800291849000801 #鍟嗘埛/骞冲彴鏀粯鍏挜id
+ wechatPubKeyPath: d://pub_key.pem #鍟嗘埛鏀粯鍏挜
+ #wechatPlatformPubKeyPath: d:/wechatpay_47E172124E73E8098A565E971064C20ACDE7C911.pem #骞冲彴鏀粯鍏挜
+ wechatPrivateKeyPath: d://wechatApiclient_key.pem #鍟嗘埛绉侀挜
+ wechatNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/wechat/transferNotify #鍟嗘埛杞处鍥炶皟鍦板潃
+ #wechatApiV3Key: V4PRKUBTK2BKNKJAD9NSI9YFG2Q0EOT1 #鍟嗘埛APIV3Key
+
#鏈嶅姟鍟�-------------end---
existsSub: 1
diff --git a/server/web/src/main/java/com/doumee/api/web/OrdersApi.java b/server/web/src/main/java/com/doumee/api/web/OrdersApi.java
index 38571fa..fe942c1 100644
--- a/server/web/src/main/java/com/doumee/api/web/OrdersApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/OrdersApi.java
@@ -9,10 +9,7 @@
import com.doumee.dao.business.model.IdentityInfo;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Orders;
-import com.doumee.dao.dto.CommentDTO;
-import com.doumee.dao.dto.ConfirmUpdOrderDTO;
-import com.doumee.dao.dto.DoneOrderDTO;
-import com.doumee.dao.dto.UpdOrderDataDTO;
+import com.doumee.dao.dto.*;
import com.doumee.dao.vo.OrderReleaseVO;
import com.doumee.service.business.IdentityInfoService;
import com.doumee.service.business.MemberService;
@@ -145,11 +142,22 @@
@ApiImplicitParams({
@ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
})
- public ApiResponse<Object> doneOrder(@RequestBody DoneOrderDTO doneOrderDTO) {
+ public ApiResponse<OrderReleaseVO> doneOrder(@RequestBody DoneOrderDTO doneOrderDTO) {
doneOrderDTO.setMember(getMemberResponse());
return ApiResponse.success("鎿嶄綔鎴愬姛",ordersService.doneOrder(doneOrderDTO));
}
+ @LoginRequired
+ @ApiOperation(value = "璁㈠崟閲嶆柊鏀粯 - 鍙戝崟鏂�", notes = "灏忕▼搴忕")
+ @PostMapping("/reusePay")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<OrderReleaseVO> reusePay(@RequestBody ReusePayDTO reusePayDTO) {
+ reusePayDTO.setMember(getMemberResponse());
+ return ApiResponse.success("鎿嶄綔鎴愬姛",ordersService.reusePay(reusePayDTO));
+ }
+
@LoginRequired
@ApiOperation(value = "璁㈠崟璇勪环 - 鍙戝崟鏂�", notes = "灏忕▼搴忕")
--
Gitblit v1.9.3