Merge remote-tracking branch 'origin/master'
# Conflicts:
# server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/address/address.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/all-orders/all-orders.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/delivery-order-detail/delivery-order-detail.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/details-entry/details-entry.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/itinerary/itinerary.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/luggage-storage/luggage-storage.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/mine.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/new-address/new-address.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/orders/orders.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/payment-success/payment-success.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/qualification/qualification.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/rich-text/rich-text.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/settings/settings.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/storage-order-detail/storage-order-detail.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/storage-point/storage-point.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/store-apply/store-apply.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/store-home/store-home.js.map
# small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/store-info/store-info.js.map
# small-program/unpackage/dist/dev/mp-weixin/common/vendor.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.js
# small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js
# small-program/unpackage/dist/dev/mp-weixin/pages/details-entry/details-entry.js
已添加15个文件
已删除1个文件
已修改41个文件
已重命名1个文件
| | |
| | | |
| | | |
| | | -- ============================================================ |
| | | -- 2026/04/20 åæ·ä¸å¸æºå¢å æ¯ä»å®å®åå§ååæ®µ |
| | | -- ============================================================ |
| | | ALTER TABLE `shop_info` ADD COLUMN `ALI_NAME` VARCHAR(50) DEFAULT NULL COMMENT 'æ¯ä»å®å®åå§å' AFTER `ALI_ACCOUNT`; |
| | | ALTER TABLE `driver_info` ADD COLUMN `ALI_ACCOUNT` VARCHAR(100) DEFAULT NULL COMMENT 'æ¯ä»å®æç°è´¦æ·' AFTER `LATITUDE`; |
| | | ALTER TABLE `driver_info` ADD COLUMN `ALI_NAME` VARCHAR(50) DEFAULT NULL COMMENT 'æ¯ä»å®å®åå§å' AFTER `ALI_ACCOUNT`; |
| | | |
| | | |
| | | -- ============================================================ |
| | | -- 2026/04/20 订å鿬¾è®°å½è¡¨å¢å 鿬¾ç¶æå段 |
| | | -- ============================================================ |
| | | ALTER TABLE `orders_refund` ADD COLUMN `STATUS` INT DEFAULT 0 COMMENT '鿬¾ç¶æï¼0=鿬¾ä¸ï¼1=鿬¾æåï¼2=鿬¾å¤±è´¥' AFTER `REFUND_REMARK`; |
| | | |
| | | |
| | | -- ============================================================ |
| | | -- 2026/04/20 订å表å¢å ç©å级å«å段 |
| | | -- ============================================================ |
| | | ALTER TABLE `orders` ADD COLUMN `GOOD_LEVEL` INT DEFAULT NULL COMMENT 'ç©å级å«ï¼category主é®ï¼type=3ï¼' AFTER `GOOD_TYPE`; |
| | |
| | | package com.doumee.biz.system.impl; |
| | | |
| | | import com.doumee.biz.system.AreasBiz; |
| | | import com.doumee.dao.business.AreasMapper; |
| | | import com.doumee.dao.business.model.Areas; |
| | | import com.doumee.service.business.AreasService; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | public class AreasBizImpl implements AreasBiz { |
| | | |
| | | @Autowired |
| | | private AreasService areasService; |
| | | private AreasMapper areasMapper; |
| | | |
| | | @Override |
| | | public Areas resolveArea(Integer areaId) { |
| | | if (areaId == null) { |
| | | return null; |
| | | } |
| | | // cacheData ä¸å·²ä¸ºæ¯æ¡åºå¿è®°å½å¡«å
äº provinceId/provinceName/cityId/cityName |
| | | return areasService.findById(areaId); |
| | | |
| | | return areasMapper.selectJoinOne(Areas.class,new MPJLambdaWrapper<Areas>() |
| | | .selectAll(Areas.class) |
| | | .select(" a1.id ",Areas::getCityId) |
| | | .select(" a1.name ",Areas::getCityName) |
| | | .select(" a2.id ",Areas::getProvinceId) |
| | | .select(" a2.name ",Areas::getProvinceName) |
| | | .leftJoin("areas a1 on a1.id = t.PARENT_ID") |
| | | .leftJoin("areas a2 on a2.id = a1.PARENT_ID") |
| | | .eq(Areas::getId, areaId) |
| | | ); |
| | | |
| | | // if (areaId == null) { |
| | | // return null; |
| | | // } |
| | | // // cacheData ä¸å·²ä¸ºæ¯æ¡åºå¿è®°å½å¡«å
äº provinceId/provinceName/cityId/cityName |
| | | // return areasMapper.selectById(areaId); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.config.alipay; |
| | | |
| | | import lombok.Data; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * æ¯ä»å®é
ç½®å±æ§ |
| | | * @author rk |
| | | * @date 2026/04/20 |
| | | */ |
| | | @Component |
| | | @ConfigurationProperties(prefix = "alipay.pay") |
| | | @Data |
| | | public class AlipayProperties { |
| | | |
| | | /** |
| | | * åºç¨ID |
| | | */ |
| | | private String appId; |
| | | |
| | | /** |
| | | * åºç¨ç§é¥ |
| | | */ |
| | | private String privateKey; |
| | | |
| | | /** |
| | | * åºç¨å
¬é¥è¯ä¹¦è·¯å¾ |
| | | */ |
| | | private String appCertPath; |
| | | |
| | | /** |
| | | * æ¯ä»å®å
¬é¥è¯ä¹¦è·¯å¾ |
| | | */ |
| | | private String alipayPublicCertPath; |
| | | |
| | | /** |
| | | * æ¯ä»å®æ ¹è¯ä¹¦è·¯å¾ |
| | | */ |
| | | private String rootCertPath; |
| | | } |
| | |
| | | import cn.binarywang.wx.miniapp.api.WxMaService; |
| | | import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; |
| | | import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.config.mybatis.SpringUtils; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.github.binarywang.wxpay.config.WxPayConfig; |
| | | import com.github.binarywang.wxpay.constant.WxPayConstants; |
| | | import com.github.binarywang.wxpay.service.WxPayService; |
| | |
| | | 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.http.HostName; |
| | | import com.wechat.pay.java.core.notification.NotificationParser; |
| | | import com.wechat.pay.java.core.notification.RSAPublicKeyNotificationConfig; |
| | | import com.wechat.pay.java.service.billdownload.BillDownloadService; |
| | | import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiService; |
| | | import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiServiceExtension; |
| | | import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension; |
| | | import com.wechat.pay.java.service.refund.RefundService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Configuration; |
| | |
| | | /** |
| | | * 微信å°ç¨åºç»ä»¶ |
| | | */ |
| | | @Slf4j |
| | | @Configuration |
| | | public class WxMiniConfig { |
| | | /********微信å°ç¨åºæå¡**********/ |
| | | public static WxMaService wxMaService; |
| | | /********微信å°ç¨åºæ¯ä»**********/ |
| | | /********微信å°ç¨åºæ¯ä» V2**********/ |
| | | public static WxPayService wxPayService; |
| | | /********微信APPæ¯ä»**********/ |
| | | public static WxPayService wxAppPayService; |
| | | |
| | | /********微信æ¯ä» V3**********/ |
| | | public static JsapiServiceExtension v3JsapiService; |
| | | public static RefundService v3RefundService; |
| | | public static NotificationParser v3NotificationParser; |
| | | |
| | | @Autowired |
| | | private WxPayProperties wxPayProperties; |
| | |
| | | void init() { |
| | | this.load_WxMaService(); |
| | | this.load_wxPayService(); |
| | | this.load_wxPayV3Service(); |
| | | // this.load_wxAppPayService(); |
| | | } |
| | | /** |
| | |
| | | config.setAppid(StringUtils.trimToNull(wxPayProperties.getAppId())); |
| | | config.setSecret(StringUtils.trimToNull(wxPayProperties.getAppSecret())); |
| | | config.setMsgDataFormat("JSON"); |
| | | //config.setToken(""); |
| | | //config.setAesKey(""); |
| | | WxMaService wxMaService = new WxMaServiceImpl(); |
| | | wxMaService.setWxMaConfig(config); |
| | | this.wxMaService = wxMaService; |
| | | } |
| | | |
| | | /** |
| | | * åå§å微信å°ç¨åºæ¯ä» |
| | | * åå§å微信å°ç¨åºæ¯ä» V2 |
| | | */ |
| | | public void load_wxPayService() { |
| | | WxPayConfig payConfig = new WxPayConfig(); |
| | |
| | | this.wxPayService = wxPayService; |
| | | } |
| | | |
| | | /** |
| | | * åå§å微信æ¯ä» V3ï¼JSAPI + 鿬¾ + åè°éªç¾ï¼ |
| | | */ |
| | | public void load_wxPayV3Service() { |
| | | try { |
| | | Config config = |
| | | new RSAPublicKeyConfig.Builder() |
| | | .merchantId(wxPayProperties.getMchId()) //微信æ¯ä»çåæ·å· |
| | | .privateKeyFromPath(wxPayProperties.getPrivateKeyPath()) // åæ·APIè¯ä¹¦ç§é¥çåæ¾è·¯å¾ |
| | | .merchantSerialNumber(wxPayProperties.getSerialNumer()) //åæ·APIè¯ä¹¦åºåå· |
| | | .publicKeyFromPath(wxPayProperties.getPubKeyPath()) //微信æ¯ä»å
¬é¥çåæ¾è·¯å¾ |
| | | .publicKeyId(wxPayProperties.getPublicKeyId()) //微信æ¯ä»å
¬é¥ID |
| | | .apiV3Key(wxPayProperties.getApiV3Key()) //APIv3å¯é¥ |
| | | .build(); |
| | | |
| | | |
| | | // æ¯ä»å
¬é¥é
ç½®ï¼ç¨äºåè°éªç¾ï¼ |
| | | RSAPublicKeyNotificationConfig notifyConfig = new RSAPublicKeyNotificationConfig.Builder() |
| | | .publicKeyFromPath(wxPayProperties.getPubKeyPath()) |
| | | .publicKeyId(wxPayProperties.getPublicKeyId()) |
| | | .apiV3Key(wxPayProperties.getApiV3Key()) |
| | | .build(); |
| | | |
| | | v3JsapiService = new JsapiServiceExtension.Builder().config(config).build(); |
| | | v3RefundService = new RefundService.Builder().config(config).build(); |
| | | v3NotificationParser = new NotificationParser(notifyConfig); |
| | | |
| | | log.info("微信æ¯ä»V3åå§åæå"); |
| | | } catch (Exception e) { |
| | | log.error("微信æ¯ä»V3åå§å失败: {}", e.getMessage(), e); |
| | | } |
| | | } |
| | | |
| | | // /** |
| | | // * åå§åAppæ¯ä» |
| | | // */ |
| | |
| | | private String notifyUrl; |
| | | |
| | | /** |
| | | * V3æ¯ä»åè°å°å |
| | | */ |
| | | private String v3NotifyUrl; |
| | | |
| | | /** |
| | | * V3鿬¾åè°å°å |
| | | */ |
| | | private String v3RefundNotifyUrl; |
| | | |
| | | /** |
| | | * æ¯ä»è¯ä¹¦(p12) |
| | | */ |
| | | private String keyPath; |
| | |
| | | */ |
| | | private String privateCertPath; |
| | | |
| | | |
| | | |
| | | /** |
| | | * æ¯ä»key |
| | | */ |
| | | private String privateKeyPath; |
| | | |
| | | |
| | | /** |
| | | * 微信æ¯ä»å
¬é¥ID |
| | | */ |
| | | private String publicKeyId; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.config.wx; |
| | | |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.utils.ID; |
| | | import com.wechat.pay.java.core.notification.RequestParam; |
| | | import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest; |
| | | import com.wechat.pay.java.service.payments.jsapi.model.PrepayWithRequestPaymentResponse; |
| | | import com.wechat.pay.java.service.refund.model.AmountReq; |
| | | import com.wechat.pay.java.service.refund.model.CreateRequest; |
| | | import com.wechat.pay.java.service.refund.model.Refund; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 微信æ¯ä»V3çæ¬æå¡ï¼JSAPIä¸å + 鿬¾ + åè°éªç¾ï¼ |
| | | * |
| | | * @author rk |
| | | * @date 2026/04/20 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class WxPayV3Service { |
| | | |
| | | @Autowired |
| | | private WxPayProperties wxPayProperties; |
| | | |
| | | /** |
| | | * JSAPIä¸åï¼è¿åå端è°èµ·æ¯ä»æéçåæ° |
| | | * |
| | | * @param outTradeNo åæ·è®¢åå· |
| | | * @param description ååæè¿° |
| | | * @param totalCents éé¢ï¼åï¼ |
| | | * @param openid ç¨æ·openid |
| | | * @param notifyUrl æ¯ä»åè°å°å |
| | | * @param attach éå æ°æ®ï¼åè°æ¶åæ ·è¿åï¼ç¨äºè·¯ç±ä¸åä¸å¡ï¼ |
| | | * @return å端è°èµ·æ¯ä»åæ°ï¼appId, timeStamp, nonceStr, package, signType, paySignï¼ |
| | | */ |
| | | public Map<String, String> createOrder(String outTradeNo, String description, |
| | | Long totalCents, String openid, |
| | | String notifyUrl, String attach) { |
| | | if (WxMiniConfig.v3JsapiService == null) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "微信æ¯ä»V3æªåå§å"); |
| | | } |
| | | try { |
| | | PrepayRequest request = new PrepayRequest(); |
| | | request.setAppid(wxPayProperties.getAppId()); |
| | | request.setMchid(wxPayProperties.getMchId()); |
| | | request.setDescription(description); |
| | | request.setOutTradeNo(outTradeNo); |
| | | request.setNotifyUrl(notifyUrl); |
| | | if (attach != null && !attach.isEmpty()) { |
| | | request.setAttach(attach); |
| | | } |
| | | |
| | | com.wechat.pay.java.service.payments.jsapi.model.Amount amount = |
| | | new com.wechat.pay.java.service.payments.jsapi.model.Amount(); |
| | | amount.setTotal(1);//totalCents.intValue()); |
| | | amount.setCurrency("CNY"); |
| | | request.setAmount(amount); |
| | | |
| | | com.wechat.pay.java.service.payments.jsapi.model.Payer payer = |
| | | new com.wechat.pay.java.service.payments.jsapi.model.Payer(); |
| | | payer.setOpenid(openid); |
| | | request.setPayer(payer); |
| | | |
| | | PrepayWithRequestPaymentResponse response = |
| | | WxMiniConfig.v3JsapiService.prepayWithRequestPayment(request); |
| | | |
| | | Map<String, String> result = new HashMap<>(); |
| | | result.put("appId", response.getAppId()); |
| | | result.put("timeStamp", response.getTimeStamp()); |
| | | result.put("nonceStr", response.getNonceStr()); |
| | | result.put("package", response.getPackageVal()); |
| | | result.put("signType", response.getSignType()); |
| | | result.put("paySign", response.getPaySign()); |
| | | return result; |
| | | } catch (Exception e) { |
| | | log.error("微信æ¯ä»V3ä¸å失败: {}", e.getMessage(), e); |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ¯ä»è°èµ·å¤±è´¥ï¼" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * V3鿬¾ |
| | | * |
| | | * @param outTradeNo åæ·è®¢åå· |
| | | * @param totalCents å订åéé¢ï¼åï¼ |
| | | * @param refundCents 鿬¾éé¢ï¼åï¼ |
| | | * @param reason 鿬¾åå |
| | | * @param notifyUrl 鿬¾åè°å°å |
| | | * @return Refund 鿬¾ç»æï¼å
å« outRefundNoãstatus çï¼ |
| | | */ |
| | | public Refund refund(String outTradeNo, Long totalCents, Long refundCents, |
| | | String reason, String notifyUrl) { |
| | | if (WxMiniConfig.v3RefundService == null) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "微信æ¯ä»V3æªåå§å"); |
| | | } |
| | | try { |
| | | String outRefundNo = ID.nextGUID(); |
| | | |
| | | CreateRequest request = new CreateRequest(); |
| | | request.setOutTradeNo(outTradeNo); |
| | | request.setOutRefundNo(outRefundNo); |
| | | request.setReason(reason); |
| | | request.setNotifyUrl(notifyUrl); |
| | | |
| | | AmountReq amount = new AmountReq(); |
| | | amount.setRefund(1L);//refundCents); |
| | | amount.setTotal(1L);//totalCents); |
| | | amount.setCurrency("CNY"); |
| | | request.setAmount(amount); |
| | | |
| | | Refund result = WxMiniConfig.v3RefundService.create(request); |
| | | log.info("微信æ¯ä»V3鿬¾ç³è¯·ç»æ, outTradeNo={}, outRefundNo={}, status={}", |
| | | outTradeNo, outRefundNo, result.getStatus()); |
| | | return result; |
| | | } catch (Exception e) { |
| | | log.error("微信æ¯ä»V3鿬¾å¤±è´¥: {}", e.getMessage(), e); |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鿬¾å¤±è´¥ï¼" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è§£æV3æ¯ä»åè°éç¥ |
| | | * |
| | | * @param serialNumber è¯ä¹¦åºåå·ï¼Wechatpay-Serial headerï¼ |
| | | * @param timestamp æ¶é´æ³ï¼Wechatpay-Timestamp headerï¼ |
| | | * @param nonce éæºä¸²ï¼Wechatpay-Nonce headerï¼ |
| | | * @param signature ç¾åï¼Wechatpay-Signature headerï¼ |
| | | * @param body 请æ±ä½JSON |
| | | * @return è§£æåçTransaction对象 |
| | | */ |
| | | public com.wechat.pay.java.service.payments.model.Transaction parsePayNotify( |
| | | String serialNumber, String timestamp, String nonce, |
| | | String signature, String body) { |
| | | try { |
| | | RequestParam requestParam = new RequestParam.Builder() |
| | | .serialNumber(serialNumber) |
| | | .timestamp(timestamp) |
| | | .nonce(nonce) |
| | | .signature(signature) |
| | | .body(body) |
| | | .build(); |
| | | |
| | | return WxMiniConfig.v3NotificationParser.parse(requestParam, |
| | | com.wechat.pay.java.service.payments.model.Transaction.class); |
| | | } catch (Exception e) { |
| | | log.error("微信æ¯ä»V3åè°éªç¾å¤±è´¥: {}", e.getMessage(), e); |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "åè°éªç¾å¤±è´¥"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è§£æV3鿬¾åè°éç¥ |
| | | * |
| | | * @param serialNumber è¯ä¹¦åºåå· |
| | | * @param timestamp æ¶é´æ³ |
| | | * @param nonce éæºä¸² |
| | | * @param signature ç¾å |
| | | * @param body 请æ±ä½JSON |
| | | * @return è§£æåçRefundNotification对象 |
| | | */ |
| | | public com.wechat.pay.java.service.refund.model.RefundNotification parseRefundNotify( |
| | | String serialNumber, String timestamp, String nonce, |
| | | String signature, String body) { |
| | | try { |
| | | RequestParam requestParam = new RequestParam.Builder() |
| | | .serialNumber(serialNumber) |
| | | .timestamp(timestamp) |
| | | .nonce(nonce) |
| | | .signature(signature) |
| | | .body(body) |
| | | .build(); |
| | | return WxMiniConfig.v3NotificationParser.parse(requestParam, |
| | | com.wechat.pay.java.service.refund.model.RefundNotification.class); |
| | | } catch (Exception e) { |
| | | log.error("微信æ¯ä»V3鿬¾åè°éªç¾å¤±è´¥: {}", e.getMessage(), e); |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鿬¾åè°éªç¾å¤±è´¥"); |
| | | } |
| | | } |
| | | } |
| | |
| | | public static final int ORDER_LOG_ASSIGN_DRIVER = 3; // ææ´¾å¸æº |
| | | public static final int ORDER_LOG_CANCEL = 4; // åæ¶è®¢å |
| | | public static final int ORDER_LOG_CONFIRM_ARRIVE = 5; // 确认顾客å°åº |
| | | public static final int ORDER_LOG_DRIVER_PICKUP = 6; // 叿ºå®æåä»¶ |
| | | |
| | | public static final String SUCCESS = "SUCCESS"; |
| | | public static final String FAIL = "FAIL"; |
| | |
| | | |
| | | |
| | | |
| | | public enum WorkOrderStatus{ |
| | | waitConfirm( 0, "å¾
åé
WTS","{title}䏿¥","","å¾
åé
WTS" ), |
| | | waitAllocation(1, "å¾
åé
ä»»å¡","å¾
åé
ä»»å¡","","å¾
åé
ä»»å¡"), |
| | | waitDeal(2, "å¾
å¤ç","å¾
å¤ç","","å¾
å·¥ç¨å¸å¤ç"), |
| | | sheClose(3, "已解å³","SHEå·²å
³é","","SHEå·²å
³é"), |
| | | wtsClose(4, "已解å³","WTSå·²å
³é","","WTSå·²å
³é"), |
| | | close(5, "已解å³","已解å³","","å·¥ç¨å¸å
³é"), |
| | | urge (6, "å¬ä¿","","","") |
| | | ; |
| | | |
| | | private int status; |
| | | private String statusInfo; |
| | | private String statusName; |
| | | private String logTitle; |
| | | private String noticeContent; |
| | | |
| | | // æé æ¹æ³ |
| | | WorkOrderStatus(int status, String statusInfo,String logTitle,String noticeContent,String statusName ) { |
| | | this.status = status; |
| | | this.statusInfo = statusInfo; |
| | | this.logTitle = logTitle; |
| | | this.noticeContent = noticeContent; |
| | | this.statusName = statusName; |
| | | } |
| | | public static String getName(int index) { |
| | | for (WorkOrderStatus c : WorkOrderStatus.values()) { |
| | | if (c.getKey() == index) { |
| | | return c.statusInfo; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | public static String getStatusName(int index) { |
| | | for (WorkOrderStatus c : WorkOrderStatus.values()) { |
| | | if (c.getKey() == index) { |
| | | return c.statusName; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public int getKey() { |
| | | return status; |
| | | } |
| | | |
| | | public void setKey(int key) { |
| | | this.status = status; |
| | | } |
| | | |
| | | public int getStatus() { |
| | | return status; |
| | | } |
| | | |
| | | public void setStatus(int status) { |
| | | this.status = status; |
| | | } |
| | | |
| | | public String getStatusName() { |
| | | return statusName; |
| | | } |
| | | |
| | | public void setStatusName(String statusName) { |
| | | this.statusName = statusName; |
| | | } |
| | | |
| | | public String getStatusInfo() { |
| | | return statusInfo; |
| | | } |
| | | |
| | | public void setStatusInfo(String statusInfo) { |
| | | this.statusInfo = statusInfo; |
| | | } |
| | | |
| | | public String getLogTitle() { |
| | | return logTitle; |
| | | } |
| | | |
| | | public void setLogTitle(String logTitle) { |
| | | this.logTitle = logTitle; |
| | | } |
| | | |
| | | public String getNoticeContent() { |
| | | return noticeContent; |
| | | } |
| | | |
| | | public void setNoticeContent(String noticeContent) { |
| | | this.noticeContent = noticeContent; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * éä»¶ç±»åï¼å¯¹åº multifile.objTypeï¼ |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 订åç«å
ä¿¡éç¥æä¸¾ |
| | | * title: éç¥æ é¢ |
| | | * content: éç¥ææ¡æ¨¡æ¿ï¼å ä½ç¬¦ç¨ {xxx} 表示 |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum MemberOrderNotify { |
| | | WAIT_PAY("waitPay", "订åå¾
æ¯ä»", "æ¨çè¡æè®¢åï¼{orderNo}å·²å建ï¼è¯·å¨{timeout}åéå
宿æ¯ä»ï¼è¶
æ¶å°èªå¨åæ¶"), |
| | | WAIT_VERIFY("waitVerify", "订åå¾
æ ¸éª", "æ¨çè¡æè®¢åï¼{orderNo}å·²æäº¤ï¼çå¾
é¨åºæ ¸éªç©åä¿¡æ¯ï¼åä»¶ç {storeCode}"), |
| | | WAIT_GRAB("waitGrab", "订åå¾
æ¢å", "æ¨çè¡æè®¢åï¼{orderNo}å·²æ ¸éªï¼æ£å¨ä¸ºæ¨å®æå件叿º"), |
| | | WAIT_PICKUP_REMIND("waitPickupRemind", "订åå¾
åä»¶", "订å{orderNo}è¡æå·²å¯åï¼è¯·è®°å¾å¨é¢çº¦åä»¶æ¶é´ååä»¶ç å徿å®é¨åºåå"), |
| | | WAIT_PICKUP_GRABBED("waitPickupGrabbed", "订åå·²æ¢å", "æ¨çè¡æè®¢åï¼å·²æå¸æº{driverName}æ¢åï¼æ£åå¾åä»¶å°ç¹"), |
| | | DELIVERING("delivering", "订åé
éä¸", "æ¨çè¡æè®¢åï¼{orderNo}å·²ç±å¸æº{driverName}åä»¶ï¼æ£è¿å¾ç®çå°"), |
| | | ARRIVED_NO_SHOP("arrivedNoShop", "订åå·²éè¾¾", "æ¨çè¡æè®¢åï¼{orderNo}å·²éè¾¾{destination},è¯·åæ¶ç¡®è®¤æ¶è´§"), |
| | | ARRIVED_HAS_SHOP("arrivedHasShop", "订åå·²éè¾¾", "æ¨çè¡æè®¢åï¼{orderNo}å·²éè¾¾{destination},è¯·åæ¶åä»¶ï¼åä»¶ç {pickupCode}"), |
| | | FINISHED("finished", "订å已宿", "æ¨çè¡æè®¢åï¼{orderNo}å·²å®æï¼æè°¢æ¨çæ¯æï¼è¯·å¯¹æ¬æ¬¡æå¡ååºè¯ä»·"), |
| | | EVALUATED("evaluated", "订åå·²è¯ä»·", "æ¨çè¡æè®¢åï¼{orderNo}è¯ä»·å·²æäº¤ï¼æè°¢æ¨çç¨å¿è¯ä»·ï¼ç¥æ¨åºè¡é¡ºå©ï¼æ
éæå¿«!"), |
| | | CANCELLED("cancelled", "订å已忶", "æ¨çè¡æè®¢åï¼{orderNo}å·²åæ¶ï¼æè°¢æ¨çæ¯æï¼æ¬¢è¿ä¸æ¬¡åä¼!"), |
| | | DRIVER_CHANGED("driverChanged", "叿ºåæ´æé", "æ¨çè¡æè®¢åï¼{orderNo}å叿ºå·²åæ¶ï¼ç³»ç»æ£å¨ä¸ºæ¨å¹é
æ°å¸æºï¼è¯·çæéç¥ã"), |
| | | REFUNDING("refunding", "订å鿬¾ä¸", "æ¨çè¡æè®¢åï¼{orderNo}鿬¾ç³è¯·å·²æäº¤ï¼å¹³å°ä¼å°å°½å¿«ä¸ºæ¨å¤ç鿬¾"), |
| | | REFUNDED("refunded", "订å已鿬¾", "æ¨çè¡æè®¢åï¼{orderNo}鿬¾å·²å®æï¼éé¢{amount}å
å°åè·¯éåï¼è¯·æ³¨ææ¥æ¶") |
| | | ; |
| | | |
| | | private final String key; |
| | | private final String title; |
| | | private final String content; |
| | | |
| | | /** |
| | | * æ ¼å¼åéç¥å
容 |
| | | * @param params é®å¼å¯¹ï¼å¦ "orderNo","123" 交æ¿ä¼ å
¥ |
| | | */ |
| | | public String format(String... params) { |
| | | String result = this.content; |
| | | for (int i = 0; i < params.length - 1; i += 2) { |
| | | result = result.replace("{" + params[i] + "}", params[i + 1]); |
| | | } |
| | | return result; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * é¨åºè®¢åç«å
ä¿¡éç¥æä¸¾ |
| | | * title: éç¥æ é¢ |
| | | * content: éç¥ææ¡æ¨¡æ¿ï¼å ä½ç¬¦ç¨ {xxx} 表示 |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum ShopOrderNotify { |
| | | WAIT_VERIFY("waitVerify", "订åå¾
æ ¸éª", "æ°è¡æè®¢åï¼{orderNo}å·²æ¯ä»ï¼è¯·å°½å¿«æ ¸éªç¨æ·ç©åä¿¡æ¯"), |
| | | WAIT_PICKUP("waitPickup", "订åå¾
åä»¶", "è¡æè®¢åï¼{orderNo}å·²æ¢åï¼çå¾
{name}åä»¶"), |
| | | REFUNDING("refunding", "订å鿬¾ä¸", "è¡æè®¢åï¼{orderNo}ç¨æ·æäº¤é款ç³è¯·ï¼è¯·ç¥æ"), |
| | | DELIVERING("delivering", "订åé
éä¸", "è¡æè®¢åï¼{orderNo}å·²ç±å¸æº{driverName}åä»¶ï¼æ£å¨é
éä¸"), |
| | | ARRIVED("arrived", "å·²éè¾¾", "è¡æè®¢åï¼{orderNo}å·²éè¾¾{destination},请èç³»ç¨æ·ç¡®è®¤ç¾æ¶"), |
| | | FINISHED("finished", "订å已宿", "è¡æè®¢åï¼{orderNo}已宿ï¼ç¸å
³è®¢åç»ç®ä¼å¨{settleDays}ä¸ªå·¥ä½æ¥å
宿"), |
| | | EVALUATED("evaluated", "订åå·²è¯ä»·", "è¡æè®¢åï¼{orderNo}ç¨æ·å·²å®æè¯ä»·ï¼å¯æ¥çè¯ä»·å
容"), |
| | | SETTLED("settled", "订åç»ç®", "è¡æè®¢åï¼{orderNo}å¹³å°å·²å®æç»ç®ï¼éé¢ä¸º{amount}å
ï¼è¯·æ³¨ææ¥æ¶ã") |
| | | ; |
| | | |
| | | private final String key; |
| | | private final String title; |
| | | private final String content; |
| | | |
| | | /** |
| | | * æ ¼å¼åéç¥å
容 |
| | | * @param params é®å¼å¯¹ï¼å¦ "orderNo","123" 交æ¿ä¼ å
¥ |
| | | */ |
| | | public String format(String... params) { |
| | | String result = this.content; |
| | | for (int i = 0; i < params.length - 1; i += 2) { |
| | | result = result.replace("{" + params[i] + "}", params[i + 1]); |
| | | } |
| | | return result; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å¾å°request对象 |
| | | * |
| | | * @return |
| | |
| | | @Slf4j |
| | | public class AliSmsService { |
| | | |
| | | private final static String ACCESS_KEY_ID = "LTAI5tMkg7wwV74a8H6Bm3Ej"; |
| | | private final static String ACCESS_KEY_SECRET = "FcHKST36sfwfo706L6bvrweGFIbp3n"; |
| | | private final static String SING_NAME = "æ©æ¡å¤©ä¸ç§æ"; |
| | | private final static String ACCESS_KEY_ID = "LTAI5t835zTU4aaYpGHJCccJ"; |
| | | private final static String ACCESS_KEY_SECRET = "98sAF2NchWVuIzu62zcLq0Ns7LIQTp"; |
| | | private final static String SING_NAME = "å京ä¸åªé¹¤"; |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | | Map<String,Object> tempParam = new java.util.HashMap<>(); |
| | | tempParam.put("order","è¡èéæå·¥"); |
| | | tempParam.put("time1","07-23"); |
| | | tempParam.put("time2","07-24"); |
| | | AliSmsService.sendSms("18055151023","SMS_491055243", JSONObject.toJSONString(tempParam)); |
| | | tempParam.put("code","1234"); |
| | | AliSmsService.sendSms("15345690849","SMS_333770877", JSONObject.toJSONString(tempParam)); |
| | | } |
| | | |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.core.utils.geocode; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.core.utils.Http; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.io.IOException; |
| | | import java.net.URLEncoder; |
| | | |
| | | /** |
| | | * é«å¾·å°å¾å·¥å
·ç±» |
| | | * |
| | | * @Author : Rk |
| | | * @create 2026/4/20 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class MapUtil { |
| | | |
| | | private static String amapKey; |
| | | |
| | | /** éå°çè§£æ */ |
| | | private static final String GEO_URL = "https://restapi.amap.com/v3/geocode/regeo"; |
| | | |
| | | /** 驾车路å¾è§å */ |
| | | private static final String DRIVING_URL = "https://restapi.amap.com/v3/direction/driving"; |
| | | |
| | | /** éªè¡è·¯å¾è§å */ |
| | | private static final String BICYCLING_URL = "https://restapi.amap.com/v4/direction/bicycling"; |
| | | |
| | | @Value("${geocode_map_key:}") |
| | | public void setAmapKey(String amapKey) { |
| | | MapUtil.amapKey = amapKey; |
| | | } |
| | | |
| | | /** |
| | | * éå°çè§£æ - æ ¹æ®ç»çº¬åº¦è·åå°åä¿¡æ¯ |
| | | * é«å¾·åæ 系为 lng,latï¼ä¸è
¾è®¯ lat,lng ç¸åï¼ |
| | | * |
| | | * @param lat 纬度 |
| | | * @param lng ç»åº¦ |
| | | * @return å
å« ad_info åå¸ä¿¡æ¯ç JSONObjectï¼å
¼å®¹è
¾è®¯è¿åæ ¼å¼ï¼ |
| | | */ |
| | | public static JSONObject reverseGeocode(double lat, double lng) { |
| | | try { |
| | | String url = GEO_URL |
| | | + "?key=" + amapKey |
| | | + "&location=" + lng + "," + lat; |
| | | |
| | | log.info("é«å¾·å°å¾éå°çè§£æè¯·æ±: lat={}, lng={}", lat, lng); |
| | | |
| | | JSONObject json = new Http().build(url) |
| | | .setConnectTimeout(5000) |
| | | .setReadTimeout(10000) |
| | | .get() |
| | | .toJSONObject(); |
| | | |
| | | log.info("é«å¾·å°å¾éå°çè§£æååº: {}", json); |
| | | |
| | | if (!"1".equals(json.getString("status"))) { |
| | | throw new RuntimeException("é«å¾·å°å¾éå°çè§£æå¤±è´¥: " + json.getString("info")); |
| | | } |
| | | |
| | | // 转æ¢ä¸ºå
¼å®¹è
¾è®¯è¿åæ ¼å¼: result.ad_info.city / adcode / district |
| | | JSONObject regeocode = json.getJSONObject("regeocode"); |
| | | JSONObject addressComponent = regeocode.getJSONObject("addressComponent"); |
| | | |
| | | JSONObject adInfo = new JSONObject(); |
| | | adInfo.put("adcode", addressComponent.getString("adcode")); |
| | | adInfo.put("city", addressComponent.getString("city")); |
| | | adInfo.put("district", addressComponent.getString("district")); |
| | | adInfo.put("province", addressComponent.getString("province")); |
| | | adInfo.put("nation", addressComponent.getString("country")); |
| | | |
| | | JSONObject result = new JSONObject(); |
| | | result.put("ad_info", adInfo); |
| | | result.put("formatted_addresses", regeocode.getString("formatted_address")); |
| | | return result; |
| | | } catch (IOException e) { |
| | | log.error("é«å¾·å°å¾éå°çè§£æå¼å¸¸", e); |
| | | throw new RuntimeException("é«å¾·å°å¾éå°çè§£æå¼å¸¸", e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å¤æä¸¤ä¸ªç»çº¬åº¦æ¯å¦å¨åä¸ä¸ªåå¸ |
| | | */ |
| | | public static boolean isSameCity(double lat1, double lng1, double lat2, double lng2) { |
| | | JSONObject result1 = reverseGeocode(lat1, lng1); |
| | | JSONObject result2 = reverseGeocode(lat2, lng2); |
| | | |
| | | String city1 = result1.getJSONObject("ad_info").getString("city"); |
| | | String city2 = result2.getJSONObject("ad_info").getString("city"); |
| | | |
| | | log.info("夿åå: ({},{}) => city={}, ({},{}) => city={}", lat1, lng1, city1, lat2, lng2, city2); |
| | | |
| | | return city1 != null && city1.equals(city2); |
| | | } |
| | | |
| | | /** |
| | | * è·¯å¾è§åï¼ç»ä¸å
¥å£ï¼ |
| | | * å
鍿 ¹æ® mode è°ç¨é«å¾·ä¸åçè·¯å¾è§åæ¥å£ |
| | | * |
| | | * @param mode 模å¼ï¼driving(驾车)ãbicycling(éªè¡) |
| | | * @param from èµ·ç¹ï¼æ ¼å¼ï¼lat,lng |
| | | * @param to ç»ç¹ï¼æ ¼å¼ï¼lat,lng |
| | | * @return JSONObject å
å« distance(ç±³) å duration(ç§) |
| | | */ |
| | | public static JSONObject direction(String mode, String from, String to) { |
| | | // é«å¾·åæ 系为 lng,lat |
| | | String[] fromArr = from.split(","); |
| | | String[] toArr = to.split(","); |
| | | String origin = fromArr[1] + "," + fromArr[0]; // lng,lat |
| | | String destination = toArr[1] + "," + toArr[0]; // lng,lat |
| | | |
| | | try { |
| | | String url; |
| | | if ("bicycling".equals(mode)) { |
| | | url = BICYCLING_URL |
| | | + "?key=" + amapKey |
| | | + "&origin=" + URLEncoder.encode(origin, "UTF-8") |
| | | + "&destination=" + URLEncoder.encode(destination, "UTF-8"); |
| | | } else { |
| | | // é»è®¤é©¾è½¦ |
| | | url = DRIVING_URL |
| | | + "?key=" + amapKey |
| | | + "&origin=" + URLEncoder.encode(origin, "UTF-8") |
| | | + "&destination=" + URLEncoder.encode(destination, "UTF-8"); |
| | | } |
| | | |
| | | log.info("é«å¾·å°å¾è·¯å¾è§å请æ±: mode={}, from={}, to={}", mode, from, to); |
| | | |
| | | JSONObject json = new Http().build(url) |
| | | .setConnectTimeout(5000) |
| | | .setReadTimeout(10000) |
| | | .get() |
| | | .toJSONObject(); |
| | | |
| | | log.info("é«å¾·å°å¾è·¯å¾è§åååº: {}", json); |
| | | |
| | | if (!"1".equals(json.getString("status"))) { |
| | | throw new RuntimeException("é«å¾·å°å¾è·¯å¾è§å失败: " + json.getString("info")); |
| | | } |
| | | |
| | | // æåç¬¬ä¸æ¡è·¯å¾ç distance å duration |
| | | JSONObject routeData; |
| | | if ("bicycling".equals(mode)) { |
| | | routeData = json.getJSONObject("data"); |
| | | } else { |
| | | routeData = json.getJSONObject("route"); |
| | | } |
| | | |
| | | JSONObject path = routeData.getJSONArray("paths").getJSONObject(0); |
| | | long distance = path.getLongValue("distance"); |
| | | long duration = path.getLongValue("duration"); |
| | | |
| | | JSONObject result = new JSONObject(); |
| | | result.put("distance", distance); |
| | | result.put("duration", duration); |
| | | return result; |
| | | } catch (IOException e) { |
| | | log.error("é«å¾·å°å¾è·¯å¾è§åå¼å¸¸", e); |
| | | throw new RuntimeException("é«å¾·å°å¾è·¯å¾è§åå¼å¸¸", e); |
| | | } |
| | | } |
| | | } |
| ÎļþÃû´Ó server/services/src/main/java/com/doumee/core/utils/Tencent/MapUtil.java ÐÞ¸Ä |
| | |
| | | package com.doumee.core.utils.Tencent; |
| | | package com.doumee.core.utils.tencent; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | |
| | | * @create 2026/4/14 15:58 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | //@Component |
| | | public class MapUtil { |
| | | |
| | | private static String tencentKey; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.business; |
| | | |
| | | import com.doumee.dao.business.model.Notice; |
| | | import com.github.yulichang.base.MPJBaseMapper; |
| | | |
| | | /** |
| | | * æ¶æ¯éç¥ä¿¡æ¯Mapper |
| | | * @author rk |
| | | * @date 2026/04/20 |
| | | */ |
| | | public interface NoticeMapper extends MPJBaseMapper<Notice> { |
| | | } |
| | |
| | | @ApiModelProperty(value = "å®ä½çº¬åº¦", example = "39.915") |
| | | private Double latitude; |
| | | |
| | | @ApiModelProperty(value = "æ¯ä»å®æç°è´¦æ·") |
| | | private String aliAccount; |
| | | |
| | | @ApiModelProperty(value = "æ¯ä»å®å®åå§å") |
| | | private String aliName; |
| | | |
| | | @ApiModelProperty(value = "车è¾ç
§çå表") |
| | | @TableField(exist = false) |
| | | private List<Multifile> carImgList = new ArrayList<>(); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.business.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * æ¶æ¯éç¥ä¿¡æ¯ |
| | | * @author rk |
| | | * @date 2026/04/20 |
| | | */ |
| | | @Data |
| | | @ApiModel("æ¶æ¯éç¥ä¿¡æ¯") |
| | | @TableName("`notice`") |
| | | public class Notice { |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主é®", example = "1") |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "å建人ç¼ç ", example = "1") |
| | | private Integer creator; |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") |
| | | private Integer editor; |
| | | |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦å é¤ 0å¦ 1æ¯", example = "0") |
| | | private Integer isdeleted; |
| | | |
| | | @ApiModelProperty(value = "夿³¨") |
| | | private String remark; |
| | | |
| | | @ApiModelProperty(value = "ç¨æ·ç±»åï¼0=ä¼åç¨æ·ï¼1=叿ºï¼2=åºéºäººå", example = "0") |
| | | private Integer userType; |
| | | |
| | | @ApiModelProperty(value = "ç¨æ·ä¸»é®ï¼member/driver_info/shop_infoï¼", example = "1") |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "æ é¢") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "å
容") |
| | | private String content; |
| | | |
| | | @ApiModelProperty(value = "对象ç¼ç ", example = "1") |
| | | private Integer objId; |
| | | |
| | | @ApiModelProperty(value = "对象类åï¼0=订åç±»åï¼99=å
¶ä»ç±»å", example = "0") |
| | | private Integer objType; |
| | | |
| | | @ApiModelProperty(value = "ç¶æï¼0=æªè¯»ï¼1=已读", example = "0") |
| | | private Integer status; |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "平尿ä½äººï¼type=1使ç¨ï¼", example = "0") |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "鿬¾ç¶æï¼0=鿬¾ä¸ï¼1=鿬¾æåï¼2=鿬¾å¤±è´¥", example = "0") |
| | | private Integer status; |
| | | |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "æ¯ä»å®æç°è´¦æ·") |
| | | private String aliAccount; |
| | | |
| | | @ApiModelProperty(value = "æ¯ä»å®å®åå§å") |
| | | private String aliName; |
| | | |
| | | @ApiModelProperty(value = "è¥ä¸æ¶é´") |
| | | private String shopHours; |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.dto; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * æ¯ä»å®åç¬è½¬è´¦è¯·æ±åæ° |
| | | * @author rk |
| | | * @date 2026/04/20 |
| | | */ |
| | | @Data |
| | | public class AlipayTransferDTO { |
| | | |
| | | /** |
| | | * åæ·ä¾§å¯ä¸è®¢åå· |
| | | */ |
| | | private String outBizNo; |
| | | |
| | | /** |
| | | * 转账éé¢ï¼å
ï¼ |
| | | */ |
| | | private BigDecimal transAmount; |
| | | |
| | | /** |
| | | * æ¶æ¬¾æ¹æ¯ä»å®è´¦å· |
| | | */ |
| | | private String payeeAccount; |
| | | |
| | | /** |
| | | * æ¶æ¬¾æ¹å§å |
| | | */ |
| | | private String payeeName; |
| | | |
| | | /** |
| | | * ä¸å¡å¤æ³¨ |
| | | */ |
| | | private String remark; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotNull; |
| | | import javax.validation.constraints.Size; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 叿ºå®æåä»¶è¯·æ± |
| | | * @author rk |
| | | * @date 2026/04/20 |
| | | */ |
| | | @Data |
| | | @ApiModel("叿ºå®æå件请æ±") |
| | | public class DriverPickupDTO { |
| | | |
| | | @NotNull(message = "订å主é®ä¸è½ä¸ºç©º") |
| | | @ApiModelProperty(value = "订å主é®", required = true, example = "1") |
| | | private Integer orderId; |
| | | |
| | | @NotNull(message = "åä»¶å¾çä¸è½ä¸ºç©º") |
| | | @Size(min = 1, max = 3, message = "åä»¶å¾ç1-3å¼ ") |
| | | @ApiModelProperty(value = "åä»¶å¾çåè¡¨ï¼æå¤3å¼ ï¼", required = true) |
| | | private List<String> images; |
| | | } |
| | |
| | | @ApiModelProperty(value = "å
¶ä»èµæç
§çï¼æå¤3å¼ ï¼mutifile objType=8ï¼") |
| | | private List<String> otherImgUrls; |
| | | |
| | | @NotEmpty(message = "æ¯ä»å®æç°è´¦æ·ä¸è½ä¸ºç©º") |
| | | @ApiModelProperty(value = "æ¯ä»å®æç°è´¦æ·", required = true) |
| | | private String aliAccount; |
| | | |
| | | @NotEmpty(message = "æ¯ä»å®å®åå§åä¸è½ä¸ºç©º") |
| | | @ApiModelProperty(value = "æ¯ä»å®å®åå§å", required = true) |
| | | private String aliName; |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "æ¯ä»å®æç°è´¦æ·", required = true) |
| | | @NotBlank(message = "æ¯ä»å®æç°è´¦æ·ä¸è½ä¸ºç©º") |
| | | private String aliAccount; |
| | | |
| | | @ApiModelProperty(value = "æ¯ä»å®å®åå§å", required = true) |
| | | @NotBlank(message = "æ¯ä»å®å®åå§åä¸è½ä¸ºç©º") |
| | | private String aliName; |
| | | } |
| | |
| | | @Size(max = 3, message = "社ä¿ç¼´çº³è¯ææå¤3å¼ ") |
| | | private List<String> socialSecurityImgs; |
| | | |
| | | @ApiModelProperty(value = "æ¯ä»å®æç°è´¦æ·", required = true) |
| | | @NotBlank(message = "æ¯ä»å®æç°è´¦æ·ä¸è½ä¸ºç©º") |
| | | private String aliAccount; |
| | | |
| | | @ApiModelProperty(value = "æ¯ä»å®å®åå§å", required = true) |
| | | @NotBlank(message = "æ¯ä»å®å®åå§åä¸è½ä¸ºç©º") |
| | | private String aliName; |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "éç§åè®®") |
| | | private String privacyAgreement; |
| | | |
| | | @ApiModelProperty(value = "æå¡ä»ç»") |
| | | @ApiModelProperty(value = "è§èé¡»ç¥") |
| | | private String serverIntroduce; |
| | | } |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | |
| | | @ApiModelProperty(value = "审æ¹ç¶æï¼0=å¾
审æ¹ï¼1=审æ¹éè¿ï¼2=å®¡æ¹æªéè¿ï¼3=å·²æ¯ä»æ¼é") |
| | | private Integer auditStatus; |
| | | |
| | | @ApiModelProperty(value = "æ¼ééé¢") |
| | | private Long depositAmount; |
| | | |
| | | @ApiModelProperty(value = "ç¶æï¼0=å¯ç¨ï¼1=ç¦ç¨") |
| | | private Integer status; |
| | | |
| | |
| | | @ApiModelProperty(value = "审æ¹äººåç§°") |
| | | private String auditName; |
| | | |
| | | @ApiModelProperty(value = "æ¯ä»å®æç°è´¦æ·") |
| | | private String aliAccount; |
| | | |
| | | @ApiModelProperty(value = "æ¯ä»å®å®åå§å") |
| | | private String aliName; |
| | | |
| | | @ApiModelProperty(value = "OPENID") |
| | | private String openid; |
| | |
| | | import com.doumee.dao.dto.DriverGrabOrderDTO; |
| | | import com.doumee.dao.business.model.DriverInfo; |
| | | import com.doumee.dao.dto.DriverLoginRequest; |
| | | import com.doumee.dao.dto.DriverPickupDTO; |
| | | import com.doumee.dao.dto.DriverRegisterRequest; |
| | | import com.doumee.dao.dto.DriverVerifyRequest; |
| | | import com.doumee.dao.vo.AccountResponse; |
| | |
| | | */ |
| | | void cancelOrder(Integer driverId, Integer orderId, String reason); |
| | | |
| | | /** |
| | | * 叿ºæ¢åï¼è®¢åç¶æä»å·²å¯å(2)å为已æ¥å(3) |
| | | * |
| | | * @param driverId 叿ºä¸»é® |
| | | * @param orderId 订åä¸»é® |
| | | */ |
| | | void grabOrder(Integer driverId, Integer orderId); |
| | | |
| | | /** |
| | | * 叿ºå®æåä»¶ï¼è®¢åç¶æä»å·²æ¥å(3)å为派éä¸(4) |
| | | * |
| | | * @param driverId 叿ºä¸»é® |
| | | * @param dto å件请æ±åæ° |
| | | */ |
| | | void confirmPickup(Integer driverId, DriverPickupDTO dto); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.service.business; |
| | | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.Notice; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æ¶æ¯éç¥ä¿¡æ¯Serviceå®ä¹ |
| | | * @author rk |
| | | * @date 2026/04/20 |
| | | */ |
| | | public interface NoticeService { |
| | | |
| | | Integer create(Notice notice); |
| | | |
| | | void deleteById(Integer id); |
| | | |
| | | void delete(Notice notice); |
| | | |
| | | void deleteByIdInBatch(List<Integer> ids); |
| | | |
| | | void updateById(Notice notice); |
| | | |
| | | void updateByIdInBatch(List<Notice> notices); |
| | | |
| | | Notice findById(Integer id); |
| | | |
| | | Notice findOne(Notice notice); |
| | | |
| | | List<Notice> findList(Notice notice); |
| | | |
| | | PageData<Notice> findPage(PageWrap<Notice> pageWrap); |
| | | |
| | | long count(Notice notice); |
| | | } |
| | |
| | | /** |
| | | * é¨åºæ¯ä»æ¼éï¼å¤èµ·å¾®ä¿¡æ¯ä»ï¼ |
| | | * |
| | | * @param shopId é¨åºä¸»é® |
| | | * @param memberId ç¨æ·ä¸»é® |
| | | * @return æ¯ä»ååº |
| | | */ |
| | | PayResponse payShopDeposit(Integer shopId); |
| | | PayResponse payShopDeposit(Integer memberId); |
| | | |
| | | /** |
| | | * é¨åºæ¼éæ¯ä»åè°å¤ç |
| | |
| | | import com.doumee.dao.business.model.Orders; |
| | | import com.doumee.dao.business.model.OrdersDetail; |
| | | import com.doumee.dao.business.model.Revenue; |
| | | import com.doumee.dao.dto.*; |
| | | import com.doumee.dao.vo.AccountResponse; |
| | | import com.doumee.dao.vo.DriverCenterVO; |
| | | import com.doumee.dao.vo.DriverGrabOrderVO; |
| | | import com.doumee.dao.vo.DriverOrderDetailVO; |
| | | import com.doumee.dao.dto.AuditDTO; |
| | | import com.doumee.dao.dto.ChangeStatusDTO; |
| | | import com.doumee.dao.dto.DriverLoginRequest; |
| | | import com.doumee.dao.dto.DriverRegisterRequest; |
| | | import com.doumee.dao.dto.DriverVerifyRequest; |
| | | import com.doumee.dao.dto.DriverActiveOrderDTO; |
| | | import com.doumee.dao.dto.DriverGrabOrderDTO; |
| | | import com.doumee.core.utils.aliyun.AliSmsService; |
| | | import com.doumee.dao.business.model.Notice; |
| | | import com.doumee.service.business.DriverInfoService; |
| | | import com.doumee.service.business.NoticeService; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang3.RandomStringUtils; |
| | |
| | | |
| | | @Autowired |
| | | private OperationConfigBiz operationConfigBiz; |
| | | |
| | | @Autowired |
| | | private NoticeService noticeService; |
| | | |
| | | /** |
| | | * åé订åç«å
ä¿¡éç¥ |
| | | */ |
| | | private void sendOrderNotice(Integer memberId, Constants.MemberOrderNotify notify, Integer orderId, String... params) { |
| | | Notice notice = new Notice(); |
| | | notice.setUserType(0); // 0=ä¼å |
| | | notice.setUserId(memberId); |
| | | notice.setTitle(notify.getTitle()); |
| | | notice.setContent(notify.format(params)); |
| | | notice.setObjId(orderId); |
| | | notice.setObjType(0); // 0=订å |
| | | notice.setStatus(0); // 0=æªè¯» |
| | | notice.setIsdeleted(Constants.ZERO); |
| | | notice.setCreateDate(new Date()); |
| | | noticeService.create(notice); |
| | | } |
| | | |
| | | /** |
| | | * åéé¨åºç«å
ä¿¡éç¥ |
| | | */ |
| | | private void sendShopNotice(Integer shopId, Constants.ShopOrderNotify notify, Integer orderId, String... params) { |
| | | Notice notice = new Notice(); |
| | | notice.setUserType(2); // 2=é¨åº |
| | | notice.setUserId(shopId); |
| | | notice.setTitle(notify.getTitle()); |
| | | notice.setContent(notify.format(params)); |
| | | notice.setObjId(orderId); |
| | | notice.setObjType(0); // 0=订å |
| | | notice.setStatus(0); // 0=æªè¯» |
| | | notice.setIsdeleted(Constants.ZERO); |
| | | notice.setCreateDate(new Date()); |
| | | noticeService.create(notice); |
| | | } |
| | | |
| | | @Override |
| | | public Integer create(DriverInfo driverInfo) { |
| | |
| | | .set(DriverInfo::getCardEndDate, request.getCardEndDate()) |
| | | .set(DriverInfo::getIdcardImg, request.getIdcardImg()) |
| | | .set(DriverInfo::getIdcardImgBack, request.getIdcardImgBack()) |
| | | .set(DriverInfo::getAuditStatus, Constants.ZERO) |
| | | .set(DriverInfo::getAliAccount, request.getAliAccount()) |
| | | .set(DriverInfo::getAliName, request.getAliName()) |
| | | .set(DriverInfo::getUpdateTime, now) |
| | | .set(DriverInfo::getAuditRemark, null) |
| | | .set(DriverInfo::getAuditTime, null) |
| | |
| | | log.setCreateTime(new Date()); |
| | | log.setDeleted(Constants.ZERO); |
| | | orderLogMapper.insert(log); |
| | | |
| | | // éç¥ä¼åï¼å¸æºåæ´ |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.DRIVER_CHANGED, orderId, |
| | | "orderNo", order.getCode()); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void grabOrder(Integer driverId, Integer orderId) { |
| | | // 1. æ ¡éªå¸æº |
| | | DriverInfo driver = driverInfoMapper.selectById(driverId); |
| | | if (driver == null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "叿ºä¿¡æ¯ä¸åå¨"); |
| | | } |
| | | // 2. æ ¡éªå¸æºæ¥åç¶æ |
| | | if (!Constants.ONE.equals(driver.getAcceptingStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请å
å¼å¯æ¥åç¶æ"); |
| | | } |
| | | if (!Integer.valueOf(3).equals(driver.getAuditStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "叿ºå®¡æ ¸æªéè¿ææªç¼´çº³æ¼é"); |
| | | } |
| | | if (driver.getDriverLevel() == null) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "叿ºç级æªè®¾ç½®"); |
| | | } |
| | | |
| | | // 3. æ ¡éªè®¢å |
| | | Orders order = ordersMapper.selectById(orderId); |
| | | if (order == null || Constants.ONE.equals(order.getDeleted())) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "订åä¸åå¨"); |
| | | } |
| | | if (!Constants.ONE.equals(order.getType())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ä»
å¼å°å¯å订å坿¢å"); |
| | | } |
| | | if (!Constants.TWO.equals(order.getStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å½å订åç¶æä¸å
许æ¢å"); |
| | | } |
| | | |
| | | // 4. æ ¡éªå¸æºç级 ⥠订åç级 |
| | | if (order.getGoodLevel() != null && driver.getDriverLevel() < order.getGoodLevel()) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "叿ºç级ä¸è¶³ï¼æ æ³æ¢è¯¥è®¢å"); |
| | | } |
| | | |
| | | // 5. ååæ´æ°ï¼å¸¦ status=2 æ¡ä»¶é²æ¢å¹¶åé夿¢å |
| | | Date now = new Date(); |
| | | int rows = ordersMapper.update(new UpdateWrapper<Orders>().lambda() |
| | | .set(Orders::getAcceptDriver, driverId) |
| | | .set(Orders::getAcceptTime, now) |
| | | .set(Orders::getAcceptType, 0) // 0=æå¨æ¢å |
| | | .set(Orders::getStatus, Constants.OrderStatus.accepted.getStatus()) |
| | | .set(Orders::getUpdateTime, now) |
| | | .eq(Orders::getId, orderId) |
| | | .eq(Orders::getStatus, Constants.TWO)); |
| | | if (rows == 0) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ¢å失败ï¼è®¢åå·²è¢«æ¢æç¶æå·²åæ´"); |
| | | } |
| | | |
| | | // 6. åå
¥æä½æ¥å¿ |
| | | OrderLog log = new OrderLog(); |
| | | log.setOrderId(orderId); |
| | | log.setTitle("叿ºæ¢å"); |
| | | log.setLogInfo("叿ºã" + driver.getName() + "ãæ¢åæå"); |
| | | log.setObjType(Constants.ORDER_LOG_DRIVER_PICKUP); |
| | | log.setOptUserId(driver.getMemberId()); |
| | | log.setOptUserType(Constants.ONE); |
| | | log.setOrderStatus(Constants.OrderStatus.accepted.getStatus()); |
| | | log.setCreateTime(now); |
| | | log.setDeleted(Constants.ZERO); |
| | | orderLogMapper.insert(log); |
| | | |
| | | // 7. éç¥ä¼åï¼å¸æºå·²æ¢å |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_GRABBED, orderId, |
| | | "driverName", driver.getName()); |
| | | |
| | | // éç¥åä»¶é¨åºï¼è®¢åå·²æ¢åå¾
åä»¶ |
| | | if (order.getDepositShopId() != null) { |
| | | sendShopNotice(order.getDepositShopId(), Constants.ShopOrderNotify.WAIT_PICKUP, orderId, |
| | | "orderNo", order.getCode()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void confirmPickup(Integer driverId, DriverPickupDTO dto) { |
| | | Integer orderId = dto.getOrderId(); |
| | | |
| | | // 1. æ ¡éªå¸æº |
| | | DriverInfo driver = driverInfoMapper.selectById(driverId); |
| | | if (driver == null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "叿ºä¿¡æ¯ä¸åå¨"); |
| | | } |
| | | |
| | | // 2. æ ¡éªè®¢å |
| | | Orders order = ordersMapper.selectById(orderId); |
| | | if (order == null || Constants.ONE.equals(order.getDeleted())) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "订åä¸åå¨"); |
| | | } |
| | | if (!Constants.ONE.equals(order.getType())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ä»
å¼å°å¯åè®¢åæ¯ææ¤æä½"); |
| | | } |
| | | if (!Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.accepted.getStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å½å订åç¶æä¸å
许å件确认"); |
| | | } |
| | | if (!driverId.equals(order.getAcceptDriver())) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "æ ææä½è¯¥è®¢å"); |
| | | } |
| | | |
| | | // 3. ä¿ååä»¶å¾ç |
| | | Date now = new Date(); |
| | | if (dto.getImages() != null && !dto.getImages().isEmpty()) { |
| | | int sortNum = 0; |
| | | for (String url : dto.getImages()) { |
| | | Multifile multifile = new Multifile(); |
| | | multifile.setObjId(orderId); |
| | | multifile.setObjType(Constants.FileType.DRIVER_TAKE.getKey()); |
| | | multifile.setType(Constants.ZERO); |
| | | multifile.setFileurl(url); |
| | | multifile.setIsdeleted(Constants.ZERO); |
| | | multifile.setCreateDate(now); |
| | | multifile.setSortnum(sortNum++); |
| | | multifileMapper.insert(multifile); |
| | | } |
| | | } |
| | | |
| | | // 4. æ´æ°è®¢åç¶æä¸ºæ´¾éä¸(4) |
| | | ordersMapper.update(new UpdateWrapper<Orders>().lambda() |
| | | .set(Orders::getStatus, Constants.OrderStatus.delivering.getStatus()) |
| | | .set(Orders::getUpdateTime, now) |
| | | .eq(Orders::getId, orderId)); |
| | | |
| | | // 5. åå
¥æä½æ¥å¿ |
| | | OrderLog log = new OrderLog(); |
| | | log.setOrderId(orderId); |
| | | log.setTitle("叿ºå®æåä»¶"); |
| | | log.setLogInfo("叿ºã" + driver.getName() + "ã宿åä»¶ï¼å¼å§æ´¾é"); |
| | | log.setObjType(Constants.ORDER_LOG_DRIVER_PICKUP); |
| | | log.setOptUserId(driver.getMemberId()); |
| | | log.setOptUserType(Constants.ONE); |
| | | log.setOrderStatus(Constants.OrderStatus.delivering.getStatus()); |
| | | log.setCreateTime(now); |
| | | log.setDeleted(Constants.ZERO); |
| | | orderLogMapper.insert(log); |
| | | |
| | | // éç¥ä¼åï¼è®¢åé
éä¸ |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.DELIVERING, orderId, |
| | | "orderNo", order.getCode(), |
| | | "driverName", driver.getName()); |
| | | |
| | | // éç¥åä»¶é¨åºï¼è®¢åé
éä¸ |
| | | if (order.getTakeShopId() != null) { |
| | | sendShopNotice(order.getTakeShopId(), Constants.ShopOrderNotify.DELIVERING, orderId, |
| | | "orderNo", order.getCode(), |
| | | "driverName", driver.getName()); |
| | | } |
| | | } |
| | | |
| | | private List<String> getFileUrls(Integer orderId, int objType, String prefix) { |
| | |
| | | * é¨åºç¨æ·èº«ä»½æ¶ï¼å¡«å
é¨åºå®¡æ ¸ç¶æ |
| | | */ |
| | | private void fillShopInfo(UserCenterVO userCenterVO, Member member) { |
| | | if (Constants.TWO.equals(member.getUserType())) { |
| | | ShopInfo shopInfo = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda() |
| | | .eq(ShopInfo::getRegionMemberId, member.getId()) |
| | | .eq(ShopInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (shopInfo != null) { |
| | | userCenterVO.setShopId(shopInfo.getId()); |
| | | userCenterVO.setShopAuditStatus(shopInfo.getAuditStatus()); |
| | | } |
| | | ShopInfo shopInfo = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda() |
| | | .eq(ShopInfo::getRegionMemberId, member.getId()) |
| | | .eq(ShopInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (shopInfo != null) { |
| | | userCenterVO.setShopId(shopInfo.getId()); |
| | | userCenterVO.setShopAuditStatus(shopInfo.getAuditStatus()); |
| | | } |
| | | // æ ¹æ®openidæ¥è¯¢å½åç»å®çé¨åº |
| | | if (StringUtils.isNotBlank(member.getOpenid())) { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.NoticeMapper; |
| | | import com.doumee.dao.business.model.Notice; |
| | | import com.doumee.service.business.NoticeService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æ¶æ¯éç¥ä¿¡æ¯Serviceå®ç° |
| | | * @author rk |
| | | * @date 2026/04/20 |
| | | */ |
| | | @Service |
| | | public class NoticeServiceImpl implements NoticeService { |
| | | |
| | | @Autowired |
| | | private NoticeMapper noticeMapper; |
| | | |
| | | @Override |
| | | public Integer create(Notice notice) { |
| | | noticeMapper.insert(notice); |
| | | return notice.getId(); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteById(Integer id) { |
| | | noticeMapper.deleteById(id); |
| | | } |
| | | |
| | | @Override |
| | | public void delete(Notice notice) { |
| | | QueryWrapper<Notice> deleteWrapper = new QueryWrapper<>(notice); |
| | | noticeMapper.delete(deleteWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteByIdInBatch(List<Integer> ids) { |
| | | if (ids == null || ids.isEmpty()) { |
| | | return; |
| | | } |
| | | noticeMapper.deleteBatchIds(ids); |
| | | } |
| | | |
| | | @Override |
| | | public void updateById(Notice notice) { |
| | | noticeMapper.updateById(notice); |
| | | } |
| | | |
| | | @Override |
| | | public void updateByIdInBatch(List<Notice> notices) { |
| | | if (notices == null || notices.isEmpty()) { |
| | | return; |
| | | } |
| | | for (Notice notice : notices) { |
| | | this.updateById(notice); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Notice findById(Integer id) { |
| | | return noticeMapper.selectById(id); |
| | | } |
| | | |
| | | @Override |
| | | public Notice findOne(Notice notice) { |
| | | QueryWrapper<Notice> wrapper = new QueryWrapper<>(notice); |
| | | return noticeMapper.selectOne(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | public List<Notice> findList(Notice notice) { |
| | | QueryWrapper<Notice> wrapper = new QueryWrapper<>(notice); |
| | | return noticeMapper.selectList(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | public PageData<Notice> findPage(PageWrap<Notice> pageWrap) { |
| | | IPage<Notice> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<Notice> queryWrapper = new QueryWrapper<>(); |
| | | if (pageWrap.getModel() != null) { |
| | | if (pageWrap.getModel().getIsdeleted() != null) { |
| | | queryWrapper.lambda().eq(Notice::getIsdeleted, pageWrap.getModel().getIsdeleted()); |
| | | } |
| | | if (pageWrap.getModel().getUserType() != null) { |
| | | queryWrapper.lambda().eq(Notice::getUserType, pageWrap.getModel().getUserType()); |
| | | } |
| | | if (pageWrap.getModel().getUserId() != null) { |
| | | queryWrapper.lambda().eq(Notice::getUserId, pageWrap.getModel().getUserId()); |
| | | } |
| | | if (pageWrap.getModel().getObjType() != null) { |
| | | queryWrapper.lambda().eq(Notice::getObjType, pageWrap.getModel().getObjType()); |
| | | } |
| | | if (pageWrap.getModel().getStatus() != null) { |
| | | queryWrapper.lambda().eq(Notice::getStatus, pageWrap.getModel().getStatus()); |
| | | } |
| | | if (pageWrap.getModel().getTitle() != null) { |
| | | queryWrapper.lambda().like(Notice::getTitle, pageWrap.getModel().getTitle()); |
| | | } |
| | | if (pageWrap.getModel().getCreateDate() != null) { |
| | | queryWrapper.lambda().ge(Notice::getCreateDate, pageWrap.getModel().getCreateDate()); |
| | | } |
| | | } |
| | | for (PageWrap.SortData sortData : pageWrap.getSorts()) { |
| | | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { |
| | | queryWrapper.orderByDesc(sortData.getProperty()); |
| | | } else { |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | } |
| | | } |
| | | return PageData.from(noticeMapper.selectPage(page, queryWrapper)); |
| | | } |
| | | |
| | | @Override |
| | | public long count(Notice notice) { |
| | | QueryWrapper<Notice> wrapper = new QueryWrapper<>(notice); |
| | | return noticeMapper.selectCount(wrapper); |
| | | } |
| | | } |
| | |
| | | import com.doumee.biz.system.OperationConfigBiz; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.config.wx.WxMiniConfig; |
| | | import com.doumee.config.wx.WxMiniUtilService; |
| | | import com.doumee.config.wx.WxPayProperties; |
| | | import com.doumee.config.wx.WxPayV3Service; |
| | | import com.wechat.pay.java.service.refund.model.Refund; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.Tencent.MapUtil; |
| | | import com.doumee.core.utils.geocode.MapUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.*; |
| | | import com.doumee.dao.business.model.*; |
| | |
| | | import com.doumee.dao.dto.MyOrderDTO; |
| | | import com.doumee.dao.dto.OrderItemDTO; |
| | | import com.doumee.dao.vo.*; |
| | | import com.doumee.service.business.NoticeService; |
| | | import com.doumee.service.business.OrderLogService; |
| | | import com.doumee.service.business.OrdersService; |
| | | import com.doumee.dao.business.model.Notice; |
| | | import com.doumee.service.business.AreasService; |
| | | import com.doumee.service.business.PricingRuleService; |
| | | import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; |
| | | import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; |
| | | import com.github.binarywang.wxpay.exception.WxPayException; |
| | | import com.github.xiaoymin.knife4j.core.util.CollectionUtils; |
| | |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.context.request.RequestContextHolder; |
| | | import org.springframework.web.context.request.ServletRequestAttributes; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.net.InetAddress; |
| | | import java.net.UnknownHostException; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * å¯å订åä¿¡æ¯Serviceå®ç° |
| | |
| | | @Autowired |
| | | private RevenueMapper revenueMapper; |
| | | |
| | | @Autowired |
| | | private WxMiniUtilService wxMiniUtilService; |
| | | |
| | | |
| | | @Autowired |
| | | private SystemUserMapper systemUserMapper; |
| | |
| | | |
| | | @Autowired |
| | | private AreasService areasService; |
| | | |
| | | @Autowired |
| | | private NoticeService noticeService; |
| | | |
| | | @Autowired |
| | | private WxPayV3Service wxPayV3Service; |
| | | |
| | | @Autowired |
| | | private WxPayProperties wxPayProperties; |
| | | |
| | | @Override |
| | | public Integer create(Orders orders) { |
| | |
| | | // 1. è°ç¨è
¾è®¯å°å¾è·ç¦»ç©éµAPI计ç®é©¾è½¦è·ç¦» |
| | | String from = dto.getFromLat() + "," + dto.getFromLgt(); |
| | | String to = dto.getToLat() + "," + dto.getToLgt(); |
| | | JSONObject distanceResult = MapUtil.distanceSingle("driving", from, to); |
| | | JSONObject distanceResult = MapUtil.direction("driving", from, to); |
| | | BigDecimal distance = distanceResult.getBigDecimal("distance"); |
| | | // distance åä½ä¸ºç±³ï¼è½¬ä¸ºå
Ž |
| | | BigDecimal distanceKm = distance.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP); |
| | |
| | | |
| | | // 5. å æ¥è´¹ç¨ï¼ç©åä»·æ ¼ Ã å æ¥ç³»æ°(åå
¸ URGENT_COEFFICIENT) |
| | | long urgentFeeFen = 0L; |
| | | if (Boolean.TRUE.equals(dto.getUrgent())) { |
| | | String urgentRateStr = systemDictDataBiz.queryByCode( |
| | | Constants.OPERATION_CONFIG, Constants.OP_URGENT_COEFFICIENT).getCode(); |
| | | BigDecimal urgentRate = new BigDecimal(urgentRateStr); |
| | | urgentFeeFen = new BigDecimal(itemPriceTotal).multiply(urgentRate) |
| | | .setScale(0, RoundingMode.HALF_UP).longValue(); |
| | | } |
| | | String urgentRateStr = systemDictDataBiz.queryByCode( |
| | | Constants.OPERATION_CONFIG, Constants.OP_URGENT_COEFFICIENT).getCode(); |
| | | BigDecimal urgentRate = new BigDecimal(urgentRateStr); |
| | | urgentFeeFen = new BigDecimal(itemPriceTotal).multiply(urgentRate) |
| | | .setScale(0, RoundingMode.HALF_UP).longValue(); |
| | | |
| | | // 6. æ»ä»·æ ¼ = ç©åä»·æ ¼ + ä¿ä»·è´¹ç¨ + å æ¥è´¹ç¨ |
| | | long totalPrice = itemPriceTotal + insuranceFeeFen + urgentFeeFen; |
| | | // 6. æ»ä»·æ ¼ = ç©åä»·æ ¼ + ä¿ä»·è´¹ç¨ + å æ¥è´¹ç¨ï¼å æ¥æ¶æå
å«å æ¥è´¹ï¼ |
| | | long totalPrice = itemPriceTotal + insuranceFeeFen; |
| | | if (Boolean.TRUE.equals(dto.getUrgent())) { |
| | | totalPrice += urgentFeeFen; |
| | | } |
| | | |
| | | PriceCalculateVO result = new PriceCalculateVO(); |
| | | result.setItemList(itemList); |
| | |
| | | takeLocationValue = takeShop.getAddress(); |
| | | } else if (dto.getTakeLat() != null && dto.getTakeLgt() != null && StringUtils.isNotBlank(dto.getTakeLocation())) { |
| | | // æ åä»¶é¨åºï¼æ ¡éªåä»¶ç¹ä¸èªéåä»¶ç¹æ¯å¦å¨åä¸åå¸ |
| | | if (MapUtil.isSameCity(depositShop.getLatitude(), depositShop.getLongitude(), |
| | | if (!MapUtil.isSameCity(depositShop.getLatitude(), depositShop.getLongitude(), |
| | | dto.getTakeLat().doubleValue(), dto.getTakeLgt().doubleValue())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å¼å°å¯å订åååç¹ä¸è½å¨åä¸åå¸ï¼å¦éååå¯åè¯·éæ©å°±è¿é¨åº"); |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å¼å°å¯å订åååç¹ä¸å¨åä¸åå¸ï¼å¦éè¯·éæ©ååé¨åº"); |
| | | } |
| | | takeLat = dto.getTakeLat(); |
| | | takeLgt = dto.getTakeLgt(); |
| | |
| | | if (member == null || StringUtils.isBlank(member.getOpenid())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ç¨æ·ä¿¡æ¯å¼å¸¸ï¼æ æ³åèµ·æ¯ä»"); |
| | | } |
| | | PayResponse payResponse = wxPay(orders, member.getOpenid(), Constants.OrdersAttach.STORAGE_ORDER); |
| | | PayResponse payResponse = wxPayV3(orders.getOutTradeNo(), orders.getTotalAmount(), orders.getId(), |
| | | member.getOpenid(), Constants.OrdersAttach.STORAGE_ORDER); |
| | | payResponse.setLockKey(lockKey); |
| | | return payResponse; |
| | | } |
| | |
| | | if (member == null || StringUtils.isBlank(member.getOpenid())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ç¨æ·ä¿¡æ¯å¼å¸¸ï¼æ æ³åèµ·æ¯ä»"); |
| | | } |
| | | return wxPay(orders, member.getOpenid(), Constants.OrdersAttach.STORAGE_ORDER); |
| | | return wxPayV3(orders.getOutTradeNo(), orders.getTotalAmount(), orders.getId(), |
| | | member.getOpenid(), Constants.OrdersAttach.STORAGE_ORDER); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å¤èµ·å¾®ä¿¡æ¯ä»V3 |
| | | * |
| | | * @param outTradeNo åæ·è®¢åå· |
| | | * @param totalCents æ¯ä»éé¢ï¼åï¼ |
| | | * @param orderId 订åä¸»é® |
| | | * @param openid ç¨æ·å¾®ä¿¡openid |
| | | * @param ordersAttach è®¢åæ¯ä»ç±»å |
| | | * @return PayResponse å
å«å¾®ä¿¡è°èµ·åæ°å订åä¸»é® |
| | | */ |
| | | private PayResponse wxPayV3(String outTradeNo, Long totalCents, Integer orderId, |
| | | String openid, Constants.OrdersAttach ordersAttach) { |
| | | Map<String, String> payParams = wxPayV3Service.createOrder( |
| | | outTradeNo, |
| | | ordersAttach.getName(), |
| | | totalCents != null ? totalCents : 0L, |
| | | openid, |
| | | wxPayProperties.getV3NotifyUrl(), |
| | | ordersAttach.getKey() |
| | | ); |
| | | |
| | | PayResponse payResponse = new PayResponse(); |
| | | payResponse.setResponse(payParams); |
| | | payResponse.setOrderId(orderId); |
| | | return payResponse; |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | // å¯ä»¶é¨åºå æ¯ï¼fieldA=0(ä¼ä¸å¯)/1(个人å¯) |
| | | int depositFieldA = Constants.equalsInteger(depositShop.getCompanyType(), Constants.ONE) ? Constants.ZERO : Constants.ONE; |
| | | BigDecimal depositShopRata = getRevenueShareRata(cityId, depositFieldA); |
| | | // åä»¶é¨åºå æ¯ï¼fieldA=2(ä¼ä¸å)/3(个人å) |
| | | int takeFieldA = Constants.equalsInteger(takeShop.getCompanyType(), Constants.ONE) ? Constants.TWO : Constants.THREE; |
| | | BigDecimal takeShopRata = getRevenueShareRata(cityId, takeFieldA); |
| | | // åä»¶é¨åºå æ¯ï¼æ åä»¶é¨åºæ¶æ¯ä¾ä¸º0 |
| | | BigDecimal takeShopRata = BigDecimal.ZERO; |
| | | if (takeShop != null) { |
| | | int takeFieldA = Constants.equalsInteger(takeShop.getCompanyType(), Constants.ONE) ? Constants.TWO : Constants.THREE; |
| | | takeShopRata = getRevenueShareRata(cityId, takeFieldA); |
| | | } |
| | | |
| | | // 计ç®èªé
¬ï¼åï¼ï¼totalAmount 为åï¼rata 为æ¯ä¾å¼ï¼å¦ 0.15 表示 15%ï¼ |
| | | long driverFee = new BigDecimal(totalAmount).multiply(driverRata).longValue(); |
| | | long depositShopFee = new BigDecimal(totalAmount).multiply(depositShopRata).longValue(); |
| | | long takeShopFee = totalAmount - driverFee - depositShopFee; |
| | | long takeShopFee = new BigDecimal(totalAmount).multiply(takeShopRata).longValue(); |
| | | |
| | | orders.setDriverFee(driverFee); |
| | | orders.setDepositShopFee(depositShopFee); |
| | |
| | | refund.setCreateTime(now); |
| | | refund.setDeleted(Constants.ZERO); |
| | | |
| | | // è°ç¨å¾®ä¿¡é款ï¼å
¨é¢é款 |
| | | String refundCode = wxMiniUtilService.wxRefund(order.getOutTradeNo(), order.getPayAmount(), order.getPayAmount()); |
| | | refund.setRefundCode(refundCode); |
| | | refund.setRefundTime(new Date()); |
| | | // è°ç¨å¾®ä¿¡é款V3ï¼å
¨é¢é款 |
| | | Refund refundResult = wxPayV3Service.refund(order.getOutTradeNo(), order.getPayAmount(), order.getPayAmount(), |
| | | "订å鿬¾", wxPayProperties.getV3RefundNotifyUrl()); |
| | | refund.setRefundCode(refundResult.getOutRefundNo()); |
| | | refund.setStatus(Constants.ZERO); // 鿬¾ä¸ |
| | | ordersRefundMapper.insert(refund); |
| | | |
| | | order.setStatus(Constants.OrderStatus.cancelled.getStatus()); |
| | |
| | | ordersMapper.updateById(order); |
| | | |
| | | saveCancelLog(order, "ä¼ååæ¶è®¢åï¼å¾
å¯åï¼å
¨é¢é款ï¼", reason, memberId); |
| | | // éç¥ä¼åï¼éæ¬¾ä¸ |
| | | sendOrderNotice(memberId, Constants.MemberOrderNotify.REFUNDING, orderId, |
| | | "orderNo", order.getCode()); |
| | | return; |
| | | } |
| | | |
| | |
| | | order.setCancelTime(now); |
| | | ordersMapper.updateById(order); |
| | | saveCancelLog(order, "ä¼åç³è¯·åæ¶è®¢åï¼å·²å¯å/å·²æ¥åï¼", reason, memberId); |
| | | // éç¥åä»¶é¨åºï¼é款ç³è¯· |
| | | if (order.getDepositShopId() != null) { |
| | | sendShopNotice(order.getDepositShopId(), Constants.ShopOrderNotify.REFUNDING, orderId, |
| | | "orderNo", order.getCode()); |
| | | } |
| | | return; |
| | | } |
| | | |
| | |
| | | log.setCreateTime(new Date()); |
| | | log.setDeleted(Constants.ZERO); |
| | | orderLogService.create(log); |
| | | } |
| | | |
| | | /** |
| | | * åé订åç«å
ä¿¡éç¥ |
| | | */ |
| | | private void sendOrderNotice(Integer memberId, Constants.MemberOrderNotify notify, Integer orderId, String... params) { |
| | | Notice notice = new Notice(); |
| | | notice.setUserType(0); // 0=ä¼å |
| | | notice.setUserId(memberId); |
| | | notice.setTitle(notify.getTitle()); |
| | | notice.setContent(notify.format(params)); |
| | | notice.setObjId(orderId); |
| | | notice.setObjType(0); // 0=订å |
| | | notice.setStatus(0); // 0=æªè¯» |
| | | notice.setIsdeleted(Constants.ZERO); |
| | | notice.setCreateDate(new Date()); |
| | | noticeService.create(notice); |
| | | } |
| | | |
| | | /** |
| | | * åéé¨åºç«å
ä¿¡éç¥ |
| | | */ |
| | | private void sendShopNotice(Integer shopId, Constants.ShopOrderNotify notify, Integer orderId, String... params) { |
| | | Notice notice = new Notice(); |
| | | notice.setUserType(2); // 2=é¨åº |
| | | notice.setUserId(shopId); |
| | | notice.setTitle(notify.getTitle()); |
| | | notice.setContent(notify.format(params)); |
| | | notice.setObjId(orderId); |
| | | notice.setObjType(0); // 0=订å |
| | | notice.setStatus(0); // 0=æªè¯» |
| | | notice.setIsdeleted(Constants.ZERO); |
| | | notice.setCreateDate(new Date()); |
| | | noticeService.create(notice); |
| | | } |
| | | |
| | | /** |
| | | * éç¥åä»¶é¨åºååä»¶é¨åºï¼è®¢å宿/è¯ä»·çï¼ |
| | | */ |
| | | private void notifyBothShops(Orders order, Constants.ShopOrderNotify notify, String... params) { |
| | | if (order.getDepositShopId() != null) { |
| | | sendShopNotice(order.getDepositShopId(), notify, order.getId(), params); |
| | | } |
| | | if (order.getTakeShopId() != null) { |
| | | sendShopNotice(order.getTakeShopId(), notify, order.getId(), params); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | } |
| | | ordersMapper.updateById(order); |
| | | |
| | | // éç¥ä¼åï¼è®¢åå¾
æ ¸éª |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_VERIFY, order.getId(), |
| | | "orderNo", order.getCode(), |
| | | "storeCode", order.getMemberVerifyCode()); |
| | | |
| | | // å°±å°å¯å订åï¼éç¥åä»¶é¨åºå¾
æ ¸éª |
| | | if (Constants.ZERO.equals(order.getType()) && order.getDepositShopId() != null) { |
| | | sendShopNotice(order.getDepositShopId(), Constants.ShopOrderNotify.WAIT_VERIFY, order.getId(), |
| | | "orderNo", order.getCode()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | otherOrders.setCreateTime(now); |
| | | otherOrdersMapper.insert(otherOrders); |
| | | |
| | | // 5. å¤èµ·å¾®ä¿¡æ¯ä» |
| | | return wxPayForOtherOrder(otherOrders, member.getOpenid(), Constants.OrdersAttach.OVERDUE_FEE); |
| | | // 5. å¤èµ·å¾®ä¿¡æ¯ä»V3 |
| | | return wxPayV3(otherOrders.getOutTradeNo(), otherOrders.getPayAccount(), otherOrders.getId(), |
| | | member.getOpenid(), Constants.OrdersAttach.OVERDUE_FEE); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class, BusinessException.class}) |
| | | public PayResponse payShopDeposit(Integer shopId) { |
| | | public PayResponse payShopDeposit(Integer memberId) { |
| | | // 1. æ¥è¯¢é¨åºä¿¡æ¯ |
| | | ShopInfo shopInfo = shopInfoMapper.selectById(shopId); |
| | | ShopInfo shopInfo = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda() |
| | | .eq(ShopInfo::getRegionMemberId,memberId)); |
| | | if (shopInfo == null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "é¨åºä¸åå¨"); |
| | | } |
| | |
| | | otherOrders.setMemberId(shopInfo.getRegionMemberId()); |
| | | otherOrders.setPayAccount(shopInfo.getDepositAmount()); |
| | | otherOrders.setPayStatus(Constants.ZERO); |
| | | otherOrders.setCode("SD" + new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(now) + shopId); |
| | | otherOrders.setCode("SD" + new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(now) + shopInfo.getId()); |
| | | otherOrders.setOutTradeNo(outTradeNo); |
| | | otherOrders.setDeleted(Constants.ZERO); |
| | | otherOrders.setCreateTime(now); |
| | | otherOrdersMapper.insert(otherOrders); |
| | | |
| | | // 5. å¤èµ·å¾®ä¿¡æ¯ä» |
| | | return wxPayForOtherOrder(otherOrders, member.getOpenid(), Constants.OrdersAttach.SHOP_DEPOSIT); |
| | | // 5. å¤èµ·å¾®ä¿¡æ¯ä»V3 |
| | | return wxPayV3(otherOrders.getOutTradeNo(), otherOrders.getPayAccount(), otherOrders.getId(), |
| | | member.getOpenid(), Constants.OrdersAttach.SHOP_DEPOSIT); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // éç¥ç¸å
³é¨åºï¼è®¢åå·²ç»ç® |
| | | notifyBothShops(order, Constants.ShopOrderNotify.SETTLED, |
| | | "orderNo", order.getCode(), |
| | | "amount", String.valueOf(Constants.getFormatMoney( |
| | | order.getTotalAmount() != null ? order.getTotalAmount() : 0L))); |
| | | } |
| | | } |
| | | |
| | |
| | | if (isRemote && order.getAcceptDriver() != null) { |
| | | updateTargetScore(Constants.THREE, order.getAcceptDriver()); |
| | | } |
| | | |
| | | // éç¥ä¼åï¼è®¢åå·²è¯ä»· |
| | | sendOrderNotice(memberId, Constants.MemberOrderNotify.EVALUATED, order.getId(), |
| | | "orderNo", order.getCode()); |
| | | |
| | | // éç¥åä»¶é¨åºååä»¶é¨åºï¼è®¢åå·²è¯ä»· |
| | | notifyBothShops(order, Constants.ShopOrderNotify.EVALUATED, |
| | | "orderNo", order.getCode()); |
| | | } |
| | | |
| | | /** |
| | |
| | | saveVerifyImages(order.getId(), images, Constants.FileType.ORDER_DEPOSIT.getKey(), shopId); |
| | | // è®°å½è®¢åæ¥å¿ |
| | | saveShopVerifyLog(order, "é¨åºç¡®è®¤å¯å", "é¨åºã" + shopName + "ã确认å¯å", remark, shopId); |
| | | // éç¥ä¼åï¼é¨åºæ ¸éæå |
| | | if (Constants.equalsInteger(order.getType(), Constants.ONE)) { |
| | | // å¼å°å¯å â å¾
æ¢å |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_GRAB, order.getId(), |
| | | "orderNo", order.getCode()); |
| | | } else { |
| | | // å°±å°å¯å â å¾
åä»¶æé |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(), |
| | | "orderNo", order.getCode()); |
| | | } |
| | | } else if (Constants.equalsInteger(status, Constants.OrderStatus.arrived.getStatus())) { |
| | | // å¼å°å¯å + æ åä»¶é¨åº â æ æ³æ ¸éï¼å®¢æ·èªåï¼æ é¨åºæä½ï¼ |
| | | if (Constants.equalsInteger(order.getType(), Constants.ONE) && order.getTakeShopId() == null) { |
| | |
| | | generateRevenueRecords(order.getId()); |
| | | // è®°å½è®¢åæ¥å¿ |
| | | saveShopVerifyLog(order, "é¨åºç¡®è®¤åä»¶", "é¨åºã" + shopName + "ã确认åä»¶ï¼è®¢å宿", remark, shopId); |
| | | // éç¥ä¼åï¼è®¢å已宿 |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.FINISHED, order.getId(), |
| | | "orderNo", order.getCode()); |
| | | // éç¥åä»¶é¨åºååä»¶é¨åºï¼è®¢å已宿 |
| | | String settleDays = operationConfigBiz.getConfig().getSettlementDate(); |
| | | notifyBothShops(order, Constants.ShopOrderNotify.FINISHED, |
| | | "orderNo", order.getCode(), |
| | | "settleDays", settleDays != null ? settleDays : "7"); |
| | | } else { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å½å订åç¶æä¸å
è®¸æ ¸é"); |
| | | } |
| | |
| | | refundRecord.setDeleted(Constants.ZERO); |
| | | ordersRefundMapper.insert(refundRecord); |
| | | |
| | | // è°ç¨å¾®ä¿¡éæ¬¾ï¼æ¾å¨æåï¼ç¡®ä¿åç½®æä½å
¨é¨æåï¼ |
| | | String refundCode = wxMiniUtilService.wxRefund( |
| | | order.getOutTradeNo(), order.getPayAmount(), order.getRefundAmount()); |
| | | // è°ç¨å¾®ä¿¡é款V3ï¼æ¾å¨æåï¼ç¡®ä¿åç½®æä½å
¨é¨æåï¼ |
| | | Refund refundResult = wxPayV3Service.refund( |
| | | order.getOutTradeNo(), order.getPayAmount(), order.getRefundAmount(), |
| | | "订å鿬¾", wxPayProperties.getV3RefundNotifyUrl()); |
| | | |
| | | // 鿬¾æååå填鿬¾åå·åæ¶é´ |
| | | refundRecord.setRefundCode(refundCode); |
| | | refundRecord.setRefundTime(new Date()); |
| | | // 鿬¾æååå填鿬¾åå·ï¼æ è®°éæ¬¾ä¸ |
| | | refundRecord.setRefundCode(refundResult.getOutRefundNo()); |
| | | refundRecord.setStatus(Constants.ZERO); // 鿬¾ä¸ |
| | | ordersRefundMapper.updateById(refundRecord); |
| | | } |
| | | |
| | |
| | | logInfo += "ï¼é款" + Constants.getFormatMoney(order.getRefundAmount()) + "å
"; |
| | | } |
| | | saveShopVerifyLog(order, "é¨åºç¡®è®¤åºåº", logInfo, remark, shopId); |
| | | // éç¥ä¼åï¼è®¢å已宿 |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.FINISHED, order.getId(), |
| | | "orderNo", order.getCode()); |
| | | // éç¥åä»¶é¨åºååä»¶é¨åºï¼è®¢å已宿 |
| | | String settleDays = operationConfigBiz.getConfig().getSettlementDate(); |
| | | notifyBothShops(order, Constants.ShopOrderNotify.FINISHED, |
| | | "orderNo", order.getCode(), |
| | | "settleDays", settleDays != null ? settleDays : "7"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | // 7. çææ¶çè®°å½ |
| | | calculateAndSaveOrderFees(orderId); |
| | | generateRevenueRecords(orderId); |
| | | |
| | | // éç¥ä¼åï¼è®¢å已宿 |
| | | sendOrderNotice(memberId, Constants.MemberOrderNotify.FINISHED, orderId, |
| | | "orderNo", order.getCode()); |
| | | // éç¥åä»¶é¨åºååä»¶é¨åºï¼è®¢å已宿 |
| | | String settleDays = operationConfigBiz.getConfig().getSettlementDate(); |
| | | notifyBothShops(order, Constants.ShopOrderNotify.FINISHED, |
| | | "orderNo", order.getCode(), |
| | | "settleDays", settleDays != null ? settleDays : "7"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | // ä¿åéä»¶ï¼obj_type=3 é¨åºå
¥åºå¾çï¼æå¤3å¼ ï¼ |
| | | saveVerifyImages(order.getId(), images, Constants.FileType.ORDER_TAKE.getKey(), driverId); |
| | | |
| | | // éç¥ä¼åï¼è®¢åå·²éè¾¾ |
| | | String destination = order.getTakeShopAddress() != null ? order.getTakeShopAddress() : ""; |
| | | if (order.getMemberVerifyCode() != null) { |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.ARRIVED_HAS_SHOP, order.getId(), |
| | | "orderNo", order.getCode(), |
| | | "destination", destination, |
| | | "pickupCode", order.getMemberVerifyCode()); |
| | | } else { |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.ARRIVED_NO_SHOP, order.getId(), |
| | | "orderNo", order.getCode(), |
| | | "destination", destination); |
| | | } |
| | | |
| | | // éç¥åä»¶é¨åºï¼è®¢åå·²éè¾¾ |
| | | if (order.getTakeShopId() != null) { |
| | | sendShopNotice(order.getTakeShopId(), Constants.ShopOrderNotify.ARRIVED, order.getId(), |
| | | "orderNo", order.getCode(), |
| | | "destination", destination); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | // è
¾è®¯å°å¾è·ç¦»ç©éµAPI计ç®å®é
è·ç¦» |
| | | String from = fromLat + "," + fromLng; |
| | | String to = toLat + "," + toLng; |
| | | JSONObject distanceResult = MapUtil.distanceSingle("driving", from, to); |
| | | JSONObject distanceResult = MapUtil.direction("driving", from, to); |
| | | |
| | | // è·åè·ç¦»ï¼ç±³ï¼ï¼è½¬å
Ž |
| | | int distanceMeters = distanceResult.getIntValue("distance"); |
| | |
| | | public void applyShop(ShopApplyDTO request) { |
| | | Member member = memberMapper.selectById(request.getMemberId()); |
| | | |
| | | // 1. æ ¡éªé¨åºææºå·å¯ä¸æ§ï¼shop_info.telephoneï¼ |
| | | checkTelephoneUnique(request.getTelephone(), null); |
| | | |
| | | // 2. æ ¹æ®ç±»åæ ¡éªéä»¶ |
| | | if (Constants.equalsInteger(request.getCompanyType(), Constants.ZERO)) { |
| | |
| | | existing.setPassword(encryptedPassword); |
| | | existing.setSalt(salt); |
| | | existing.setAliAccount(request.getAliAccount()); |
| | | existing.setAuditStatus(Constants.ZERO); |
| | | existing.setAliName(request.getAliName()); |
| | | existing.setUpdateTime(now); |
| | | existing.setAuditRemark(null); |
| | | existing.setAuditTime(null); |
| | | existing.setAuditUserId(null); |
| | | existing.setAuditStatus(Constants.ZERO); |
| | | shopInfoMapper.updateById(existing); |
| | | shopId = existing.getId(); |
| | | } else { |
| | | // 1. æ ¡éªé¨åºææºå·å¯ä¸æ§ï¼shop_info.telephoneï¼ |
| | | checkTelephoneUnique(request.getTelephone(), null); |
| | | // æ°å»º |
| | | ShopInfo shopInfo = new ShopInfo(); |
| | | shopInfo.setCompanyType(request.getCompanyType()); |
| | |
| | | shopInfo.setPassword(encryptedPassword); |
| | | shopInfo.setSalt(salt); |
| | | shopInfo.setAliAccount(request.getAliAccount()); |
| | | shopInfo.setOpenid(member.getOpenid()); |
| | | shopInfo.setAuditStatus(Constants.ZERO); |
| | | shopInfo.setAliName(request.getAliName()); |
| | | shopInfo.setStatus(Constants.ZERO); |
| | | shopInfo.setDeleted(Constants.ZERO); |
| | | shopInfo.setCreateTime(now); |
| | |
| | | shopInfo.setLegalPersonName(request.getLegalPersonName()); |
| | | shopInfo.setLegalPersonPhone(request.getLegalPersonPhone()); |
| | | shopInfo.setLegalPersonCard(request.getLegalPersonCard()); |
| | | shopInfo.setAliAccount(request.getAliAccount()); |
| | | shopInfo.setAliName(request.getAliName()); |
| | | shopInfo.setUpdateTime(now); |
| | | shopInfoMapper.updateById(shopInfo); |
| | | |
| | |
| | | vo.setPayStatus(shopInfo.getPayStatus()); |
| | | vo.setScore(shopInfo.getScore()); |
| | | vo.setCreateTime(shopInfo.getCreateTime()); |
| | | vo.setAliAccount(shopInfo.getAliAccount()); |
| | | vo.setAliName(shopInfo.getAliName()); |
| | | vo.setDepositAmount(shopInfo.getDepositAmount()); |
| | | |
| | | // æ¼æ¥å¾çåç¼ |
| | | String imgPrefix = ""; |
| | |
| | | import com.doumee.dao.business.model.ShopInfo; |
| | | import com.doumee.dao.business.model.WithdrawalOrders; |
| | | import com.doumee.dao.dto.WithdrawalApproveDTO; |
| | | import com.doumee.config.alipay.AlipayFundTransUniTransfer; |
| | | import com.doumee.dao.dto.AlipayTransferDTO; |
| | | import com.doumee.dao.dto.WithdrawalDTO; |
| | | import com.doumee.dao.system.SystemUserMapper; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void approve(WithdrawalApproveDTO dto) { |
| | | if (dto == null || dto.getId() == null || dto.getStatus() == null) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "审æ¹åæ°ä¸å®æ´"); |
| | |
| | | Integer currentUserId = getCurrentUserId(); |
| | | Date now = new Date(); |
| | | |
| | | // 审æ¹éè¿æ¶ï¼è°ç¨æ¯ä»å®ææ¬¾ |
| | | Integer finalStatus = dto.getStatus(); |
| | | String doneInfo = null; |
| | | if (Constants.ONE.equals(dto.getStatus())) { |
| | | String aliAccount = order.getAliAccount(); |
| | | String aliName = null; |
| | | |
| | | // ä»å¸æºæé¨åºè·åæ¯ä»å®è´¦æ·åå®åå§å |
| | | if (StringUtils.isBlank(aliAccount)) { |
| | | if (Constants.equalsInteger(order.getMemberType(), Constants.ONE)) { |
| | | DriverInfo driver = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda() |
| | | .eq(DriverInfo::getMemberId, order.getMemberId()) |
| | | .eq(DriverInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (driver != null) { |
| | | aliAccount = driver.getAliAccount(); |
| | | aliName = driver.getAliName(); |
| | | } |
| | | } else if (Constants.equalsInteger(order.getMemberType(), Constants.TWO)) { |
| | | ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda() |
| | | .eq(ShopInfo::getRegionMemberId, order.getMemberId()) |
| | | .eq(ShopInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (shop != null) { |
| | | aliAccount = shop.getAliAccount(); |
| | | aliName = shop.getAliName(); |
| | | } |
| | | } |
| | | } else { |
| | | // ä» WithdrawalOrders ç aliAccount æ¥å¯¹åºå§å |
| | | if (Constants.equalsInteger(order.getMemberType(), Constants.ONE)) { |
| | | DriverInfo driver = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda() |
| | | .eq(DriverInfo::getMemberId, order.getMemberId()) |
| | | .eq(DriverInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (driver != null) { |
| | | aliName = driver.getAliName(); |
| | | } |
| | | } else if (Constants.equalsInteger(order.getMemberType(), Constants.TWO)) { |
| | | ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda() |
| | | .eq(ShopInfo::getRegionMemberId, order.getMemberId()) |
| | | .eq(ShopInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (shop != null) { |
| | | aliName = shop.getAliName(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (StringUtils.isBlank(aliAccount)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ¯ä»å®æç°è´¦æ·æªé
ç½®ï¼æ æ³ææ¬¾"); |
| | | } |
| | | |
| | | // éé¢è½¬æ¢ï¼å â å
|
| | | Long amountFen = order.getAmount() != null ? order.getAmount() : 0L; |
| | | BigDecimal transAmount = new BigDecimal(amountFen).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); |
| | | |
| | | AlipayTransferDTO transferDTO = new AlipayTransferDTO(); |
| | | transferDTO.setOutBizNo(order.getOutBillNo()); |
| | | transferDTO.setTransAmount(transAmount); |
| | | transferDTO.setPayeeAccount(aliAccount); |
| | | transferDTO.setPayeeName(aliName); |
| | | transferDTO.setRemark("æç°ææ¬¾"); |
| | | |
| | | String alipayOrderId; |
| | | try { |
| | | alipayOrderId = AlipayFundTransUniTransfer.transfer(transferDTO); |
| | | } catch (BusinessException e) { |
| | | throw e; |
| | | } catch (Exception e) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ¯ä»å®ææ¬¾å¤±è´¥ï¼" + e.getMessage()); |
| | | } |
| | | doneInfo = "æ¯ä»å®è½¬è´¦åå·ï¼" + alipayOrderId; |
| | | } |
| | | |
| | | WithdrawalOrders update = new WithdrawalOrders(); |
| | | update.setId(dto.getId()); |
| | | update.setStatus(dto.getStatus()); |
| | | update.setStatus(finalStatus); |
| | | update.setUserId(currentUserId); |
| | | update.setApproveTime(now); |
| | | update.setApproveRemark(dto.getApproveRemark()); |
| | | update.setUpdateTime(now); |
| | | if (Constants.ONE.equals(finalStatus)) { |
| | | update.setDoneTime(now); |
| | | update.setDoneInfo(doneInfo); |
| | | } else if (doneInfo != null) { |
| | | update.setDoneTime(now); |
| | | update.setDoneInfo(doneInfo); |
| | | } |
| | | withdrawalOrdersMapper.updateById(update); |
| | | |
| | | // æ´æ°å
³èçæç° Revenue è®°å½ç¶æ |
| | |
| | | .eq(Revenue::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (withdrawalRevenue != null) { |
| | | Integer revenueStatus = Constants.ONE.equals(dto.getStatus()) ? Constants.ZERO : Constants.ONE; // éè¿=0æå, 驳å=1失败 |
| | | Integer revenueStatus = Constants.ONE.equals(finalStatus) ? Constants.ZERO : Constants.ONE; // éè¿=0æå, 驳å=1失败 |
| | | revenueMapper.update(new UpdateWrapper<Revenue>().lambda() |
| | | .set(Revenue::getStatus, revenueStatus) |
| | | .set(Revenue::getUpdateTime, now) |
| | | .eq(Revenue::getId, withdrawalRevenue.getId())); |
| | | } |
| | | |
| | | // 驳忶éåä½é¢ |
| | | if (Constants.TWO.equals(dto.getStatus())) { |
| | | // é©³åæææ¬¾å¤±è´¥æ¶éåä½é¢ |
| | | if (Constants.TWO.equals(finalStatus)) { |
| | | Long amountFen = order.getAmount() != null ? order.getAmount() : 0L; |
| | | if (amountFen > 0 && order.getMemberId() != null) { |
| | | if (Constants.equalsInteger(order.getMemberType(), Constants.ONE)) { |
| | |
| | | mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM #åæ·ç§é¥ |
| | | apiV3Key: 7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB #apiV3Key |
| | | serialNumer: 3FE90C2F3D40A56E1C51926F31B8A8D22426CCE0 #åæ·è¯ä¹¦åºåå· |
| | | notifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxPayNotify |
| | | refundNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxRefundNotify |
| | | publicKeyId: PUB_KEY_ID_0112298170022025071700291836000600 |
| | | pubKeyPath: D:\DouMee\1229817002_20220310_cert\pub_key.pem #åæ·æ¯ä»å
¬é¥ |
| | | keyPath: D:\DouMee\1229817002_20220310_cert\apiclient_cert.p12 |
| | | privateCertPath: D:\DouMee\1229817002_20220310_cert\apiclient_cert.pem |
| | | privateKeyPath: D:\DouMee\1229817002_20220310_cert\apiclient_key.pem |
| | | pubKeyPath: D:\DouMee\1229817002_20220310_cert\pub_key.pem #åæ·æ¯ä»å
¬é¥ |
| | | notifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxPayNotify |
| | | refundNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxRefundNotify |
| | | v3NotifyUrl: http://xiaopiqiu2.natapp1.cc/web/api/wxPayV3Notify |
| | | v3RefundNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/api/wxRefundV3Notify |
| | | |
| | | # appId: wx6264b4f3a697cbe8 |
| | | # appSecret: 23734577e8978138c946b727f0394027 |
| | |
| | | # è
¾è®¯å°å¾apikey |
| | | tencent_key: WE3BZ-HN6WS-ONDOH-62QCV-MNL6F-5NFNE |
| | | |
| | | # é«å¾·å°å¾apikey |
| | | geocode_map_key: 9a62636d82d6c7c2372e57d80f99287c |
| | | |
| | | |
| | | |
| | | |
| | |
| | | serialNumer: 3FE90C2F3D40A56E1C51926F31B8A8D22426CCE0 #åæ·è¯ä¹¦åºåå· |
| | | notifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxPayNotify |
| | | refundNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxRefundNotify |
| | | v3NotifyUrl: http://xiaopiqiu2.natapp1.cc/web/api/wxPayV3Notify |
| | | v3RefundNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/api/wxRefundV3Notify |
| | | keyPath: D:\DouMee\1229817002_20220310_cert\apiclient_cert.p12 |
| | | privateCertPath: D:\DouMee\1229817002_20220310_cert\apiclient_cert.pem |
| | | privateKeyPath: D:\DouMee\1229817002_20220310_cert\apiclient_key.pem |
| | |
| | | |
| | | |
| | | # è
¾è®¯å°å¾apikey |
| | | tencent_key: WE3BZ-HN6WS-ONDOH-62QCV-MNL6F-5NFNE |
| | | tencent_key: WE3BZ-HN6WS-ONDOH-62QCV-MNL6F-5NFNE |
| | | |
| | | # é«å¾·å°å¾apikey |
| | | geocode_map_key: |
| | |
| | | #mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S |
| | | notifyUrl: https://test.doumee.cn/jinkuai_admin/web/wxPayNotify |
| | | refundNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/wxRefundNotify |
| | | v3NotifyUrl: https://test.doumee.cn/jinkuai_admin/web/api/wxPayV3Notify |
| | | v3RefundNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/api/wxRefundV3Notify |
| | | keyPath: /usr/local/jars/payFile/apiclient_cert.p12 |
| | | privateCertPath: /usr/local/jars/payFile/apiclient_cert.pem |
| | | privateKeyPath: /usr/local/jars/payFile/apiclient_key.pem |
| | |
| | | |
| | | |
| | | # è
¾è®¯å°å¾apikey |
| | | tencent_key: WE3BZ-HN6WS-ONDOH-62QCV-MNL6F-5NFNE |
| | | tencent_key: WE3BZ-HN6WS-ONDOH-62QCV-MNL6F-5NFNE |
| | | |
| | | # é«å¾·å°å¾apikey |
| | | geocode_map_key: |
| | |
| | | import com.doumee.core.annotation.LoginRequired; |
| | | import com.doumee.core.annotation.trace.Trace; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.utils.Tencent.MapUtil; |
| | | import com.doumee.core.utils.geocode.MapUtil; |
| | | import com.doumee.dao.business.model.Areas; |
| | | import com.doumee.dao.business.model.Banner; |
| | | import com.doumee.dao.business.model.Category; |
| | |
| | | import com.doumee.dao.dto.DriverActiveOrderDTO; |
| | | import com.doumee.dao.dto.DriverGrabOrderDTO; |
| | | import com.doumee.dao.dto.DriverLoginRequest; |
| | | import com.doumee.dao.dto.DriverPickupDTO; |
| | | import com.doumee.dao.dto.DriverRegisterRequest; |
| | | import com.doumee.dao.dto.DriverVerifyRequest; |
| | | import com.doumee.dao.vo.AccountResponse; |
| | |
| | | |
| | | @LoginDriverRequired |
| | | @Trace |
| | | @ApiOperation(value = "叿ºæ¢å", notes = "对已å¯å(status=2)çå¼å°å¯å订ååèµ·æ¢å") |
| | | @PostMapping("/grabOrder") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true), |
| | | @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "orderId", value = "订å主é®", required = true) |
| | | }) |
| | | public ApiResponse grabOrder(@RequestParam Integer orderId) { |
| | | driverInfoService.grabOrder(this.getDriverId(), orderId); |
| | | return ApiResponse.success("æ¢åæå"); |
| | | } |
| | | |
| | | @LoginDriverRequired |
| | | @Trace |
| | | @ApiOperation(value = "叿ºè¿è¡ä¸è®¢å", notes = "æ¥è¯¢å·²æ¢å(status=3)ææ´¾éä¸(status=4)ç订åå表") |
| | | @PostMapping("/activeOrders") |
| | | @ApiImplicitParams({ |
| | |
| | | return ApiResponse.success("åæ¶æå"); |
| | | } |
| | | |
| | | @LoginDriverRequired |
| | | @Trace |
| | | @ApiOperation(value = "叿ºå®æåä»¶", notes = "å·²æ¥å(status=3)æ¶ç¡®è®¤åä»¶ï¼è®¢åè¿å
¥æ´¾éä¸(status=4)") |
| | | @PostMapping("/confirmPickup") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true) |
| | | }) |
| | | public ApiResponse confirmPickup(@RequestBody @Valid DriverPickupDTO dto) { |
| | | driverInfoService.confirmPickup(this.getDriverId(), dto); |
| | | return ApiResponse.success("æä½æå"); |
| | | } |
| | | |
| | | } |
| | |
| | | package com.doumee.api.web; |
| | | |
| | | import com.doumee.config.wx.WxMiniConfig; |
| | | import com.doumee.config.wx.WxPayV3Service; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.utils.ID; |
| | | import com.doumee.dao.business.OrdersRefundMapper; |
| | | import com.doumee.dao.business.OrdersMapper; |
| | | import com.doumee.dao.business.model.Notice; |
| | | import com.doumee.dao.business.model.Orders; |
| | | import com.doumee.dao.business.model.OrdersRefund; |
| | | import com.doumee.service.business.NoticeService; |
| | | import com.doumee.service.business.OrdersService; |
| | | import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; |
| | | import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; |
| | | import com.wechat.pay.java.service.payments.model.Transaction; |
| | | import com.wechat.pay.java.service.refund.model.RefundNotification; |
| | | import com.wechat.pay.java.service.refund.model.Status; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.CrossOrigin; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Date; |
| | | import java.util.Objects; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * æ¯ä»åè° |
| | |
| | | @Autowired |
| | | private OrdersService ordersService; |
| | | |
| | | @Autowired |
| | | private WxPayV3Service wxPayV3Service; |
| | | |
| | | @Autowired |
| | | private OrdersRefundMapper ordersRefundMapper; |
| | | |
| | | @Autowired |
| | | private OrdersMapper ordersMapper; |
| | | |
| | | @Autowired |
| | | private NoticeService noticeService; |
| | | |
| | | |
| | | // ==================== V2 åè° ==================== |
| | | |
| | | @PostMapping("/web/api/wxPayNotify") |
| | | public String wxPay_notify(@RequestBody String xmlResult) { |
| | | String wxId = ID.nextGUID(); |
| | | log.info("æ¯ä»åè°ä¿¡æ¯("+wxId+") = > " + xmlResult); |
| | | if (StringUtils.isEmpty(xmlResult)){ |
| | | log.info("V2æ¯ä»åè°ä¿¡æ¯(" + wxId + ") => " + xmlResult); |
| | | if (StringUtils.isEmpty(xmlResult)) { |
| | | return null; |
| | | } |
| | | try { |
| | | WxPayOrderNotifyResult result = WxMiniConfig.wxPayService.parseOrderNotifyResult(xmlResult); |
| | | //èªå®ä¹è®¢åå· |
| | | String outTradeNo = result.getOutTradeNo(); |
| | | //微信订åå· |
| | | String paymentNo = result.getTransactionId(); |
| | | |
| | | |
| | | |
| | | if (Constants.SUCCESS.equals(result.getReturnCode())) { |
| | | // æ¯ä»æå |
| | | switch (result.getAttach()) { |
| | | //å¯å订å |
| | | case "storageOrder": { |
| | | ordersService.handleStorageOrderPayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | } |
| | | //åºéºæ¼é订å |
| | | case "shopDeposit": { |
| | | ordersService.handleShopDepositPayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | } |
| | | //é¾æè´¹ç¨è®¢å |
| | | case "overdueFee": { |
| | | ordersService.handleOverdueFeePayNotify(outTradeNo, paymentNo); |
| | | break; |
| | |
| | | return WxPayNotifyResponse.fail(result.getReturnMsg()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("微信åè°ç»æå¼å¸¸,å¼å¸¸åå {}", e.getLocalizedMessage()); |
| | | log.error("V2微信åè°ç»æå¼å¸¸,å¼å¸¸åå {}", e.getLocalizedMessage()); |
| | | return WxPayNotifyResponse.fail(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | // ==================== V3 åè° ==================== |
| | | |
| | | /** |
| | | * V3æ¯ä»åè° |
| | | */ |
| | | @PostMapping("/web/api/wxPayV3Notify") |
| | | public Map<String, String> wxPayV3Notify( |
| | | @RequestHeader("Wechatpay-Serial") String serialNumber, |
| | | @RequestHeader("Wechatpay-Timestamp") String timestamp, |
| | | @RequestHeader("Wechatpay-Nonce") String nonce, |
| | | @RequestHeader("Wechatpay-Signature") String signature, |
| | | @RequestBody String body) { |
| | | String wxId = ID.nextGUID(); |
| | | log.info("V3æ¯ä»åè°ä¿¡æ¯({}) => {}", wxId, body); |
| | | try { |
| | | Transaction transaction = wxPayV3Service.parsePayNotify( |
| | | serialNumber, timestamp, nonce, signature, body); |
| | | |
| | | String outTradeNo = transaction.getOutTradeNo(); |
| | | String paymentNo = transaction.getTransactionId(); |
| | | |
| | | if (Transaction.TradeStateEnum.SUCCESS.equals(transaction.getTradeState())) { |
| | | String attach = transaction.getAttach(); |
| | | if (StringUtils.isNotBlank(attach)) { |
| | | switch (attach) { |
| | | case "storageOrder": |
| | | ordersService.handleStorageOrderPayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | case "shopDeposit": |
| | | ordersService.handleShopDepositPayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | case "overdueFee": |
| | | ordersService.handleOverdueFeePayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | Map<String, String> response = new HashMap<>(); |
| | | response.put("code", "SUCCESS"); |
| | | response.put("message", "å¤çæå"); |
| | | return response; |
| | | } catch (Exception e) { |
| | | log.error("V3æ¯ä»åè°å¼å¸¸,å¼å¸¸åå {}", e.getLocalizedMessage()); |
| | | Map<String, String> response = new HashMap<>(); |
| | | response.put("code", "FAIL"); |
| | | response.put("message", e.getMessage()); |
| | | return response; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * V3鿬¾åè° |
| | | */ |
| | | @PostMapping("/web/api/wxRefundV3Notify") |
| | | public Map<String, String> wxRefundV3Notify( |
| | | @RequestHeader("Wechatpay-Serial") String serialNumber, |
| | | @RequestHeader("Wechatpay-Timestamp") String timestamp, |
| | | @RequestHeader("Wechatpay-Nonce") String nonce, |
| | | @RequestHeader("Wechatpay-Signature") String signature, |
| | | @RequestBody String body) { |
| | | String wxId = ID.nextGUID(); |
| | | log.info("V3鿬¾åè°ä¿¡æ¯({}) => {}", wxId, body); |
| | | try { |
| | | RefundNotification refundNotification = wxPayV3Service.parseRefundNotify( |
| | | serialNumber, timestamp, nonce, signature, body); |
| | | |
| | | log.info("V3鿬¾åè°ç»æ, outTradeNo={}, outRefundNo={}, refundStatus={}", |
| | | refundNotification.getOutTradeNo(), |
| | | refundNotification.getOutRefundNo(), |
| | | refundNotification.getRefundStatus()); |
| | | |
| | | // æ ¹æ®é款åå·æ´æ°é款记å½ç¶æ |
| | | String outRefundNo = refundNotification.getOutRefundNo(); |
| | | OrdersRefund refundRecord = ordersRefundMapper.selectOne( |
| | | new com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<OrdersRefund>().lambda() |
| | | .eq(OrdersRefund::getRefundCode, outRefundNo) |
| | | .eq(OrdersRefund::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (refundRecord != null) { |
| | | Status refundStatus = refundNotification.getRefundStatus(); |
| | | if (Status.SUCCESS.equals(refundStatus)) { |
| | | refundRecord.setStatus(Constants.ONE); // 鿬¾æå |
| | | refundRecord.setRefundTime(new java.util.Date()); |
| | | } else if (Status.CLOSED.equals(refundStatus) || Status.ABNORMAL.equals(refundStatus)) { |
| | | refundRecord.setStatus(Constants.TWO); // 鿬¾å¤±è´¥ |
| | | } |
| | | ordersRefundMapper.updateById(refundRecord); |
| | | log.info("鿬¾è®°å½ç¶æå·²æ´æ°, refundRecordId={}, status={}", refundRecord.getId(), refundRecord.getStatus()); |
| | | |
| | | // 鿬¾æå â éç¥ä¼å |
| | | if (Status.SUCCESS.equals(refundStatus) && refundRecord.getOrderId() != null) { |
| | | Orders refundOrder = ordersMapper.selectById(refundRecord.getOrderId()); |
| | | if (refundOrder != null) { |
| | | Notice notice = new Notice(); |
| | | notice.setUserType(0); |
| | | notice.setUserId(refundOrder.getMemberId()); |
| | | notice.setTitle(Constants.MemberOrderNotify.REFUNDED.getTitle()); |
| | | notice.setContent(Constants.MemberOrderNotify.REFUNDED.format( |
| | | "orderNo", refundOrder.getCode(), |
| | | "amount", String.valueOf(Constants.getFormatMoney(refundOrder.getRefundAmount() != null ? refundOrder.getRefundAmount() : 0L)))); |
| | | notice.setObjId(refundOrder.getId()); |
| | | notice.setObjType(0); |
| | | notice.setStatus(0); |
| | | notice.setIsdeleted(Constants.ZERO); |
| | | notice.setCreateDate(new java.util.Date()); |
| | | noticeService.create(notice); |
| | | } |
| | | } |
| | | } |
| | | |
| | | Map<String, String> response = new HashMap<>(); |
| | | response.put("code", "SUCCESS"); |
| | | response.put("message", "å¤çæå"); |
| | | return response; |
| | | } catch (Exception e) { |
| | | log.error("V3鿬¾åè°å¼å¸¸,å¼å¸¸åå {}", e.getLocalizedMessage()); |
| | | Map<String, String> response = new HashMap<>(); |
| | | response.put("code", "FAIL"); |
| | | response.put("message", e.getMessage()); |
| | | return response; |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | return ApiResponse.success(shopInfoService.getShopMaintainInfo(this.getMemberId())); |
| | | } |
| | | |
| | | @LoginShopRequired |
| | | @LoginRequired |
| | | @ApiOperation("é¨åºæ¯ä»æ¼é") |
| | | @PostMapping("/payDeposit") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "é¨åºtokenå¼", required = true) |
| | | }) |
| | | public ApiResponse<PayResponse> payDeposit() { |
| | | return ApiResponse.success("æä½æå", ordersService.payShopDeposit(getShopId())); |
| | | return ApiResponse.success("æä½æå", ordersService.payShopDeposit(getMemberId())); |
| | | } |
| | | |
| | | } |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: #004096; |
| | | background: linear-gradient( 270deg, #66F8E4 0%, #15B9F7 100%), #10B2FA; |
| | | border-radius: 44rpx; |
| | | position: fixed; |
| | | left: 30rpx; |
| | |
| | | <template> |
| | | <view class="container"> |
| | | <view class="head"> |
| | | <view class="head" :class="'head-' + shopAuditStatus"> |
| | | <view class="head-top"> |
| | | <image src="/static/images/ic_renzhengzhong@2x.png" mode="widthFix"></image> |
| | | <text>å¹³å°å®¡æ ¸ä¸</text> |
| | | <image :src="statusIcon" mode="widthFix"></image> |
| | | <text>{{ statusText }}</text> |
| | | </view> |
| | | <view class="head-bottom"> |
| | | å®¡æ ¸ç»æå°éè¿çä¿¡/订é
æ¶æ¯éç¥æ¨ |
| | | {{ statusBottomText }} |
| | | </view> |
| | | </view> |
| | | <view class="list"> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">æ³¨åææºå·</view> |
| | | <view class="list-item-value">{{ form.telephone }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">é¨åºåç§°</view> |
| | | <view class="list-item-value">{{ form.name }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">é¨åºç±»å</view> |
| | | <view class="list-item-value">{{ form.companyType === 0 ? '个人' : 'ä¼ä¸' }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">æå¨åå¸</view> |
| | | <view class="list-item-value">{{ fullAreaName }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">é¨åºå°å</view> |
| | | <view class="list-item-value">{{ form.address }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">è系人</view> |
| | | <view class="list-item-value">{{ form.linkName }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">è系人çµè¯</view> |
| | | <view class="list-item-value">{{ form.linkPhone }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">è系人身份è¯</view> |
| | | <view class="list-item-value">{{ form.idcard }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">æ¯ä»å®è´¦å·</view> |
| | | <view class="list-item-value">{{ form.aliAccount }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">æ¯ä»å®å§å</view> |
| | | <view class="list-item-value">{{ form.aliName }}</view> |
| | | </view> |
| | | <view class="list-item" style="flex-direction: column; align-items: flex-start;"> |
| | | <view class="list-item-label" style="margin-bottom: 30rpx;">èº«ä»½è¯æ£åé¢</view> |
| | | <view class="idcard"> |
| | | <view class="idcard-image" v-if="form.idcardImg" @click="previewImage(form.idcardImg)"> |
| | | <image :src="getFullPath(form.idcardImg)" mode="aspectFill"></image> |
| | | </view> |
| | | <view class="idcard-image" v-if="form.idcardImgBack" @click="previewImage(form.idcardImgBack)"> |
| | | <image :src="getFullPath(form.idcardImgBack)" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list-item" style="flex-direction: column; align-items: flex-start;"> |
| | | <view class="list-item-label" style="margin-bottom: 30rpx;">é¨åºé¨å¤´ç
§ç</view> |
| | | <view class="imgList"> |
| | | <view class="imgItem" v-for="(img, index) in form.storeFrontImgs" :key="index" @click="previewImage(img)"> |
| | | <image :src="getFullPath(img)" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list-item" style="flex-direction: column; align-items: flex-start;"> |
| | | <view class="list-item-label" style="margin-bottom: 30rpx;">é¨åºå
é¨ç
§ç</view> |
| | | <view class="imgList"> |
| | | <view class="imgItem" v-for="(img, index) in form.storeInteriorImgs" :key="index" @click="previewImage(img)"> |
| | | <image :src="getFullPath(img)" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list-item" style="flex-direction: column; align-items: flex-start;"> |
| | | <view class="list-item-label" style="margin-bottom: 30rpx;">å
¶ä»ææ</view> |
| | | <view class="imgList"> |
| | | <view class="imgItem" v-for="(img, index) in form.otherMaterialImgs" :key="index" @click="previewImage(img)"> |
| | | <image :src="getFullPath(img)" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <template v-if="form.companyType === 0"> |
| | | <view class="list-item" style="flex-direction: column; align-items: flex-start;"> |
| | | <view class="list-item-label" style="margin-bottom: 30rpx;">ææå³å·¥åå</view> |
| | | <view class="imgList"> |
| | | <view class="imgItem" v-for="(img, index) in form.laborContractImgs" :key="index" @click="previewImage(img)"> |
| | | <image :src="getFullPath(img)" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list-item" style="flex-direction: column; align-items: flex-start;"> |
| | | <view class="list-item-label" style="margin-bottom: 30rpx;">ææç¤¾ä¿ç¼´çº³è¯æ</view> |
| | | <view class="imgList"> |
| | | <view class="imgItem" v-for="(img, index) in form.socialSecurityImgs" :key="index" @click="previewImage(img)"> |
| | | <image :src="getFullPath(img)" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | <template v-else> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">æ³äººå§å</view> |
| | | <view class="list-item-value">{{ form.legalPersonName }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">ä¼ä¸æ¯ä»å®è´¦å·</view> |
| | | <view class="list-item-value">{{ form.aliAccount }}</view> |
| | | </view> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">æ³äººèº«ä»½è¯å·</view> |
| | | <view class="list-item-value">{{ form.legalPersonCardNo }}</view> |
| | | </view> |
| | | <view class="list-item" style="flex-direction: column; align-items: flex-start;"> |
| | | <view class="list-item-label" style="margin-bottom: 30rpx;">æ³äººèº«ä»½è¯æ£åé¢</view> |
| | | <view class="idcard"> |
| | | <view class="idcard-image" v-if="form.legalPersonCard" @click="previewImage(form.legalPersonCard)"> |
| | | <image :src="getFullPath(form.legalPersonCard)" mode="aspectFill"></image> |
| | | </view> |
| | | <view class="idcard-image" v-if="form.legalPersonCardBack" @click="previewImage(form.legalPersonCardBack)"> |
| | | <image :src="getFullPath(form.legalPersonCardBack)" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list-item" style="flex-direction: column; align-items: flex-start;"> |
| | | <view class="list-item-label" style="margin-bottom: 30rpx;">è¥ä¸æ§ç
§</view> |
| | | <view class="imgList"> |
| | | <view class="imgItem" v-if="form.businessImg" @click="previewImage(form.businessImg)"> |
| | | <image :src="getFullPath(form.businessImg)" mode="aspectFill"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </view> |
| | | <view class="footer-btn" v-if="shopAuditStatus === 1"> |
| | | <view class="pay-btn" @click="goToPay">æ¯ä»æ¼é ï¿¥{{ form.depositAmount }}</view> |
| | | </view> |
| | | <view class="footer-btn" v-if="shopAuditStatus === 2"> |
| | | <view class="reapply-btn" @click="goToReapply">éæ°è®¤è¯</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | |
| | | form: { |
| | | telephone: '', |
| | | name: '', |
| | | companyType: 0, |
| | | provinceName: '', |
| | | cityName: '', |
| | | areaName: '', |
| | | address: '', |
| | | linkName: '', |
| | | linkPhone: '', |
| | | idcard: '', |
| | | aliAccount: '', |
| | | storeFrontImgs: [], |
| | | storeInteriorImgs: [], |
| | | otherMaterialImgs: [], |
| | | idcardImg: '', |
| | | idcardImgBack: '', |
| | | laborContractImgs: [], |
| | | socialSecurityImgs: [], |
| | | legalPersonName: '', |
| | | legalPersonCard: '', |
| | | legalPersonCardBack: '', |
| | | legalPersonCardNo: '', |
| | | businessImg: '', |
| | | depositAmount: '', |
| | | aliName: '' |
| | | }, |
| | | imgPrefix: '', |
| | | statusText: 'å¹³å°å®¡æ ¸ä¸', |
| | | shopAuditStatus: 0, |
| | | statusBottomText: '' |
| | | }; |
| | | }, |
| | | computed: { |
| | | statusIcon() { |
| | | const iconMap = { |
| | | 0: '/static/icon/ic_renzhengzhong@2x.png', |
| | | 1: '/static/icon/ic_pass@2x.png', |
| | | 2: '/static/icon/ic_fail@2x.png', |
| | | 3: '/static/icon/ic_pass@2x.png' |
| | | } |
| | | return iconMap[this.shopAuditStatus] || iconMap[0] |
| | | }, |
| | | fullAreaName() { |
| | | const arr = [this.form.provinceName, this.form.cityName, this.form.areaName].filter(Boolean) |
| | | return arr.join('/') |
| | | } |
| | | }, |
| | | onLoad() { |
| | | this.getMyShopData() |
| | | }, |
| | | methods: { |
| | | getFullPath(url) { |
| | | if (!url) return '' |
| | | if (url.startsWith('http')) { |
| | | return url |
| | | } |
| | | return this.imgPrefix + url |
| | | }, |
| | | previewImage(url) { |
| | | uni.previewImage({ |
| | | urls: [this.getFullPath(url)], |
| | | current: 0 |
| | | }) |
| | | }, |
| | | goToPay() { |
| | | uni.showLoading({ title: 'åèµ·æ¯ä»ä¸...', mask: true }) |
| | | this.$u.api.payDeposit({}).then(res => { |
| | | uni.hideLoading() |
| | | if (res.code === 200 && res.data) { |
| | | let paymentData = res.data.response |
| | | uni.requestPayment({ |
| | | provider: 'wxpay', |
| | | timeStamp: paymentData.timeStamp || '', |
| | | nonceStr: paymentData.nonceStr || '', |
| | | package: paymentData.package || '', |
| | | signType: paymentData.signType || 'MD5', |
| | | paySign: paymentData.paySign || '', |
| | | success: (res) => { |
| | | this.getMyShopData() |
| | | }, |
| | | fail: (err) => { |
| | | if (err.errMsg.includes('cancel')) { |
| | | uni.showToast({ title: '已忶æ¯ä»', icon: 'none' }) |
| | | } else { |
| | | uni.showToast({ title: 'æ¯ä»å¤±è´¥', icon: 'none' }) |
| | | } |
| | | } |
| | | }) |
| | | } else { |
| | | uni.showToast({ title: res.msg || 'æ¯ä»å¤±è´¥', icon: 'none' }) |
| | | } |
| | | }).catch(err => { |
| | | uni.hideLoading() |
| | | uni.showToast({ title: 'æ¯ä»å¤±è´¥', icon: 'none' }) |
| | | }) |
| | | }, |
| | | goToReapply() { |
| | | uni.navigateTo({ |
| | | url: '/pages/store-apply/store-apply' |
| | | }) |
| | | }, |
| | | async getMyShopData() { |
| | | try { |
| | | const res = await this.$u.api.getMyShop() |
| | | if (res.code === 200 && res.data) { |
| | | const data = res.data |
| | | this.imgPrefix = data.imgPrefix || '' |
| | | this.form.telephone = data.telephone || '' |
| | | this.form.name = data.name || '' |
| | | this.form.companyType = data.companyType || 0 |
| | | this.form.provinceName = data.provinceName || '' |
| | | this.form.cityName = data.cityName || '' |
| | | this.form.areaName = data.areaName || '' |
| | | this.form.address = data.address || '' |
| | | this.form.linkName = data.linkName || '' |
| | | this.form.linkPhone = data.linkPhone || '' |
| | | this.form.idcard = data.idcard || '' |
| | | this.form.aliAccount = data.aliAccount || '' |
| | | this.form.legalPersonName = data.legalPersonName || '' |
| | | this.form.legalPersonCardNo = data.legalPersonCard || '' |
| | | this.form.aliName = data.aliName || '' |
| | | if (data.storeFrontImgs) { |
| | | this.form.storeFrontImgs = typeof data.storeFrontImgs === 'string' ? data.storeFrontImgs.split(',') : data.storeFrontImgs |
| | | } |
| | | if (data.storeInteriorImgs) { |
| | | this.form.storeInteriorImgs = typeof data.storeInteriorImgs === 'string' ? data.storeInteriorImgs.split(',') : data.storeInteriorImgs |
| | | } |
| | | if (data.otherMaterialImgs) { |
| | | this.form.otherMaterialImgs = typeof data.otherMaterialImgs === 'string' ? data.otherMaterialImgs.split(',') : data.otherMaterialImgs |
| | | } |
| | | this.form.idcardImg = data.idcardImg || '' |
| | | this.form.idcardImgBack = data.idcardImgBack || '' |
| | | if (data.laborContractImgs) { |
| | | this.form.laborContractImgs = typeof data.laborContractImgs === 'string' ? data.laborContractImgs.split(',') : data.laborContractImgs |
| | | } |
| | | if (data.socialSecurityImgs) { |
| | | this.form.socialSecurityImgs = typeof data.socialSecurityImgs === 'string' ? data.socialSecurityImgs.split(',') : data.socialSecurityImgs |
| | | } |
| | | this.form.legalPersonCard = data.legalPersonCard || '' |
| | | this.form.legalPersonCardBack = data.legalPersonCardBack || '' |
| | | if (data.auditStatus === 1) { |
| | | this.form.depositAmount = data.depositAmount / 100 || '' |
| | | } |
| | | this.form.businessImg = data.businessImg || '' |
| | | const statusMap = { |
| | | 0: 'å¹³å°å®¡æ ¸ä¸', |
| | | 1: 'é¨åºå
¥é©»å·²éè¿', |
| | | 2: 'é¨åºå
¥é©»å·²æç»', |
| | | 3: 'é¨åºå·²å
¥é©»' |
| | | } |
| | | this.shopAuditStatus = data.auditStatus || 0 |
| | | this.statusText = statusMap[this.shopAuditStatus] || 'å¹³å°å®¡æ ¸ä¸' |
| | | const bottomTextMap = { |
| | | 0: 'å®¡æ ¸ç»æå°éè¿çä¿¡/订é
æ¶æ¯éç¥æ¨', |
| | | 1: '请æ¯ä»é¨åºå
¥é©»æ¼é', |
| | | 2: 'è¥ä¸æ§ç
§è¿æï¼è¯·éæ°æäº¤å®¡æ ¸', |
| | | 3: ' ' |
| | | } |
| | | this.statusBottomText = bottomTextMap[this.shopAuditStatus] || bottomTextMap[0] |
| | | } |
| | | } catch (error) { |
| | | console.log('è·ååºéºä¿¡æ¯å¤±è´¥', error) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <style lang="scss" scoped> |
| | | .container { |
| | | width: 100%; |
| | | padding-bottom: 140rpx; |
| | | .list { |
| | | width: 100%; |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | | .list-item { |
| | | width: 100%; |
| | | padding: 30rpx 0; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | .list-item-label { |
| | | width: 245rpx; |
| | | flex-shrink: 0; |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #777777; |
| | | } |
| | | .imgList { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | .imgItem { |
| | | width: 144rpx; |
| | | height: 144rpx; |
| | | border-radius: 8rpx; |
| | | gap: 20rpx; |
| | | overflow: hidden; |
| | | image { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | .idcard { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | .idcard-image { |
| | | flex: 1; |
| | | height: 216rpx; |
| | | overflow: hidden; |
| | | border-radius: 8rpx; |
| | | border: 1rpx solid #E5E5E5; |
| | | &:first-child { |
| | | margin-right: 22rpx; |
| | | } |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | } |
| | | .list-item-value { |
| | | flex: 1; |
| | | text-align: right; |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | | .head { |
| | | width: 100%; |
| | | height: 248rpx; |
| | |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: rgba(255,114,0,0.08); |
| | | .head-top { |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | text { |
| | | font-weight: 600; |
| | | font-size: 40rpx; |
| | | color: #FA8010; |
| | | } |
| | | } |
| | | .head-bottom { |
| | |
| | | color: #333333; |
| | | margin-top: 34rpx; |
| | | } |
| | | &.head-0 { |
| | | background: rgba(255,114,0,0.08); |
| | | .head-top text { |
| | | color: #FA8010; |
| | | } |
| | | } |
| | | &.head-1 { |
| | | background: rgba(0,211,113,0.1); |
| | | .head-top text { |
| | | color: #00D371; |
| | | } |
| | | } |
| | | &.head-3 { |
| | | background: rgba(0,211,113,0.1); |
| | | .head-top text { |
| | | color: #00D371; |
| | | } |
| | | } |
| | | &.head-2 { |
| | | background: rgba(255,0,0,0.08); |
| | | .head-top text { |
| | | color: #FF0000; |
| | | } |
| | | } |
| | | } |
| | | .footer-btn { |
| | | width: 100%; |
| | | padding: 20rpx 30rpx; |
| | | box-sizing: border-box; |
| | | background: #fff; |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | .pay-btn, .reapply-btn { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | background: #10B2FA; |
| | | border-radius: 44rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <view v-for="item in menuList" :key="item.label" class="menu-row" @click="handleMenuClick(item)"> |
| | | <text class="menu-label">{{ item.label }}</text> |
| | | <view class="right-icon"> |
| | | <text v-if="item.label === 'é¨åºå
¥é©»'" :class="{ 'status-red': userInfo.shopAuditStatus === 1 || userInfo.shopAuditStatus === 2 }"> |
| | | {{ userInfo.shopAuditStatus === 0 ? 'å®¡æ ¸ä¸' : userInfo.shopAuditStatus === 1 ? 'å®¡æ ¸éè¿ï¼è¯·æ¯ä»æ¼é' : userInfo.shopAuditStatus === 2 ? 'å®¡æ ¸æªéè¿' : 'ç³è¯·å
¥é©»' }} |
| | | <text v-if="['é¨åºå
¥é©»','é¨åºä¿¡æ¯'].includes(item.label)" :class="{ 'status-red': userInfo.shopAuditStatus === 1 || userInfo.shopAuditStatus === 2 }"> |
| | | {{ userInfo.shopAuditStatus === 0 ? 'å®¡æ ¸ä¸' : userInfo.shopAuditStatus === 1 ? 'å®¡æ ¸éè¿ï¼è¯·æ¯ä»æ¼é' : userInfo.shopAuditStatus === 2 ? 'å®¡æ ¸æªéè¿' : userInfo.shopAuditStatus === 3 ? 'é¨åºå·²å
¥é©»' : '' }} |
| | | </text> |
| | | <u-icon name="arrow-right" size="18" color="#B5BBC5"></u-icon> |
| | | </view> |
| | |
| | | async onShow() { |
| | | await this.$onLaunched |
| | | if (this.userInfo) { |
| | | if (this.userInfo.shopAuditStatus === 3) { |
| | | this.menuList[0].label = 'é¨åºä¿¡æ¯' |
| | | } |
| | | this.getOrderNum() |
| | | } |
| | | }, |
| | |
| | | 'è§èé¡»ç¥': '/pages/rich-text/rich-text?type=serverIntroduce', |
| | | 'å
³äºæä»¬': '/pages/rich-text/rich-text?type=about' |
| | | } |
| | | if (item.label === 'é¨åºå
¥é©»' && [0,1,2].includes(this.userInfo.shopAuditStatus)) { |
| | | if (['é¨åºå
¥é©»','é¨åºä¿¡æ¯'].includes(item.label) && [0,1,2,3].includes(this.userInfo.shopAuditStatus)) { |
| | | uni.navigateTo({ |
| | | url: '/pages/details-entry/details-entry' |
| | | }) |
| | |
| | | <view class="form-group select-group"> |
| | | <view class="label-row"><text class="label">æå¨åå¸</text><text class="required">*</text></view> |
| | | <view class="select-row" @click="showAreaPicker = true"> |
| | | <text class="select-text" :class="{ placeholder: !form.areaName }">{{ form.areaName || 'è¯·éæ©çå¸åº' }}</text> |
| | | <text class="select-text" :class="{ placeholder: !fullAreaName }">{{ fullAreaName || 'è¯·éæ©çå¸åº' }}</text> |
| | | <u-icon name="arrow-right" size="18" color="#9FA6B2"></u-icon> |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="divider"></view> |
| | | |
| | | <view class="form-group compact-group"> |
| | | <view class="label-row"><text class="label">æ¯ä»å®å§å</text><text class="required">*</text></view> |
| | | <input class="text-input" v-model="form.aliName" placeholder="请è¾å
¥æ¯ä»å®å§å" placeholder-class="placeholder" /> |
| | | </view> |
| | | <view class="divider"></view> |
| | | |
| | | <view class="upload-section subject-upload-section"> |
| | | <view class="upload-title-row"> |
| | | <view class="label-row"><text class="label">èº«ä»½è¯æ£åé¢</text><text class="required">*</text></view> |
| | |
| | | <view class="divider"></view> |
| | | |
| | | <view class="form-group compact-group"> |
| | | <view class="label-row"><text class="label">æ¯ä»å®å§å</text><text class="required">*</text></view> |
| | | <input class="text-input" v-model="form.aliName" placeholder="请è¾å
¥æ¯ä»å®å§å" placeholder-style="color: #c1c7d0;" /> |
| | | </view> |
| | | <view class="divider"></view> |
| | | |
| | | <view class="form-group compact-group"> |
| | | <view class="label-row"><text class="label">æ³äººèº«ä»½è¯å·</text><text class="required">*</text></view> |
| | | <input class="text-input" v-model="form.legalPersonCard" placeholder="请è¾å
¥æ³äººèº«ä»½è¯å·ç " placeholder-style="color: #c1c7d0;" /> |
| | | </view> |
| | |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | ...mapState(['userInfo']), |
| | | fullAreaName() { |
| | | const arr = [this.form.provinceName, this.form.cityName, this.form.areaName].filter(Boolean) |
| | | return arr.join('/') |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | telephone: '', |
| | | companyType: 0, |
| | | name: '', |
| | | provinceName: '', |
| | | cityName: '', |
| | | areaName: '', |
| | | areaId: '', |
| | | longitude: '', |
| | | latitude: '', |
| | |
| | | legalPersonName: '', |
| | | legalPersonPhone: '', |
| | | aliAccount: '', |
| | | aliName: '', |
| | | businessImg: '' |
| | | }, |
| | | |
| | | previewMode: 'filled', |
| | | imgPrefix: '', |
| | | currentStep: 1, |
| | | qualificationType: 'company', |
| | | showAreaPicker: false, |
| | |
| | | uni.showToast({ title: '请ä¸ä¼ 身份è¯å½å¾½é¢', icon: 'none' }) |
| | | return |
| | | } |
| | | if (!this.form.aliAccount) { |
| | | uni.showToast({ title: '请è¾å
¥ä¸ªäººæ¯ä»å®è´¦å·', icon: 'none' }) |
| | | return |
| | | } |
| | | if (!this.form.aliName) { |
| | | uni.showToast({ title: '请è¾å
¥æ¯ä»å®å§å', icon: 'none' }) |
| | | return |
| | | } |
| | | if (!this.form.laborContractImgs || this.form.laborContractImgs.length === 0) { |
| | | uni.showToast({ title: '请ä¸ä¼ å³å¨åå', icon: 'none' }) |
| | | return |
| | |
| | | } |
| | | if (!this.form.aliAccount) { |
| | | uni.showToast({ title: '请è¾å
¥ä¼ä¸æ¯ä»å®è´¦å·', icon: 'none' }) |
| | | return |
| | | } |
| | | if (!this.form.aliName) { |
| | | uni.showToast({ title: '请è¾å
¥æ¯ä»å®å§å', icon: 'none' }) |
| | | return |
| | | } |
| | | if (!this.form.legalPersonCard) { |
| | |
| | | if (res.code === 200 && res.data) { |
| | | const data = res.data |
| | | const imgPrefix = data.imgPrefix || '' |
| | | this.imgPrefix = data.imgPrefix || '' |
| | | this.form.name = data.name || '' |
| | | this.form.areaId = data.areaId || '' |
| | | this.form.provinceName = data.provinceName || '' |
| | | this.form.cityName = data.cityName || '' |
| | | this.form.areaName = data.areaName || '' |
| | | this.form.areaId = data.areaId || '' |
| | | this.form.address = data.address || '' |
| | | this.form.longitude = data.longitude || '' |
| | | this.form.latitude = data.latitude || '' |
| | |
| | | this.form.linkPhone = data.linkPhone || '' |
| | | this.form.idcard = data.idcard || '' |
| | | this.form.aliAccount = data.aliAccount || '' |
| | | this.form.aliName = data.aliName || '' |
| | | this.form.companyType = data.companyType || 0 |
| | | this.form.telephone = data.telephone || this.userInfo.telephone || '' |
| | | this.form.legalPersonName = data.legalPersonName || '' |
| | | this.form.legalPersonPhone = data.legalPersonPhone || '' |
| | | this.qualificationType = data.companyType === 0 ? 'personal' : 'company' |
| | | if (data.storeFrontImgs) { |
| | | let storeFrontImgs = data.storeFrontImgs |
| | | if (typeof storeFrontImgs === 'string') { |
| | | storeFrontImgs = storeFrontImgs.split(',') |
| | | } |
| | | this.storeFrontImages = storeFrontImgs |
| | | this.uploadedImagesStoreFront = storeFrontImgs.map(url => ({ url: imgPrefix + url })) |
| | | this.form.storeFrontImgs = storeFrontImgs |
| | | this.storeFrontImages = data.storeFrontImgUrls |
| | | this.uploadedImagesStoreFront = data.storeFrontImgUrls.map(url => ({ url })) |
| | | this.form.storeFrontImgs = data.storeFrontImgs |
| | | } |
| | | if (data.storeInteriorImgs) { |
| | | let storeInteriorImgs = data.storeInteriorImgs |
| | | if (typeof storeInteriorImgs === 'string') { |
| | | storeInteriorImgs = storeInteriorImgs.split(',') |
| | | } |
| | | this.idCardImages = storeInteriorImgs |
| | | this.uploadedImagesIdCard = storeInteriorImgs.map(url => ({ url: imgPrefix + url })) |
| | | this.form.storeInteriorImgs = storeInteriorImgs |
| | | this.idCardImages = data.storeInteriorImgUrls |
| | | this.uploadedImagesIdCard = data.storeInteriorImgUrls.map(url => ({ url })) |
| | | this.form.storeInteriorImgs = data.storeInteriorImgs |
| | | } |
| | | if (data.otherMaterialImgs) { |
| | | let otherMaterialImgs = data.otherMaterialImgs |
| | | if (typeof otherMaterialImgs === 'string') { |
| | | otherMaterialImgs = otherMaterialImgs.split(',') |
| | | } |
| | | this.permitImages = otherMaterialImgs |
| | | this.uploadedImagesPermit = otherMaterialImgs.map(url => ({ url: imgPrefix + url })) |
| | | this.form.otherMaterialImgs = otherMaterialImgs |
| | | this.permitImages = data.otherMaterialImgUrls |
| | | this.uploadedImagesPermit = data.otherMaterialImgUrls.map(url => ({ url })) |
| | | this.form.otherMaterialImgs = data.otherMaterialImgs |
| | | } |
| | | this.form.idcardImg = data.idcardImg ? imgPrefix + data.idcardImg : '' |
| | | this.form.idcardImgBack = data.idcardImgBack ? imgPrefix + data.idcardImgBack : '' |
| | | this.form.idcardImg = data.idcardImg || '' |
| | | this.form.idcardImgBack = data.idcardImgBack || '' |
| | | if (data.laborContractImgs) { |
| | | let laborContractImgs = data.laborContractImgs |
| | | if (typeof laborContractImgs === 'string') { |
| | | laborContractImgs = laborContractImgs.split(',') |
| | | } |
| | | this.laborContractImages = laborContractImgs |
| | | this.uploadedLaborContractImages = laborContractImgs.map(url => ({ url: imgPrefix + url })) |
| | | this.form.laborContractImgs = laborContractImgs |
| | | this.laborContractImages = data.laborContractImgUrls |
| | | this.uploadedLaborContractImages = data.laborContractImgUrls.map(url => ({ url })) |
| | | this.form.laborContractImgs = data.laborContractImgs |
| | | } |
| | | if (data.socialSecurityImgs) { |
| | | let socialSecurityImgs = data.socialSecurityImgs |
| | | if (typeof socialSecurityImgs === 'string') { |
| | | socialSecurityImgs = socialSecurityImgs.split(',') |
| | | } |
| | | this.socialSecurityImages = socialSecurityImgs |
| | | this.uploadedSocialSecurityImages = socialSecurityImgs.map(url => ({ url: imgPrefix + url })) |
| | | this.form.socialSecurityImgs = socialSecurityImgs |
| | | this.socialSecurityImages = data.socialSecurityImgUrls |
| | | this.uploadedSocialSecurityImages = data.socialSecurityImgUrls.map(url => ({ url })) |
| | | this.form.socialSecurityImgs = data.socialSecurityImgs |
| | | } |
| | | this.form.legalPersonCard = data.legalPersonCard ? imgPrefix + data.legalPersonCard : '' |
| | | this.form.legalPersonCardBack = data.legalPersonCardBack ? imgPrefix + data.legalPersonCardBack : '' |
| | | this.form.businessImg = data.businessImg ? imgPrefix + data.businessImg : '' |
| | | this.form.legalPersonCard = data.legalPersonCard || '' |
| | | this.form.legalPersonCardBack = data.legalPersonCardBack || '' |
| | | this.form.businessImg = data.businessImg || '' |
| | | if (data.businessImg) { |
| | | this.businessImages = [data.businessImg] |
| | | this.businessImages = [data.businessImgUrl] |
| | | } |
| | | } |
| | | } catch (error) { |
| | |
| | | }, |
| | | getShortPath(url) { |
| | | if (!url) return '' |
| | | const baseUrl = this.$baseUrl || '' |
| | | if (url.startsWith('http')) { |
| | | return url |
| | | return url.replace(this.imgPrefix, '') |
| | | } |
| | | return url.replace(baseUrl, '') |
| | | return url |
| | | }, |
| | | getFullPath(url) { |
| | | if (!url) return '' |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: #004096; |
| | | background: linear-gradient(270deg, #66F8E4 0%, #15B9F7 100%), #10B2FA; |
| | | border-radius: 44rpx; |
| | | position: fixed; |
| | | left: 30rpx; |
| | |
| | | <view class="container data-v-1ce3ee54"><view class="head data-v-1ce3ee54"><view class="head-top data-v-1ce3ee54"><image src="/static/images/ic_renzhengzhong@2x.png" mode="widthFix" class="data-v-1ce3ee54"></image><text class="data-v-1ce3ee54">å¹³å°å®¡æ ¸ä¸</text></view><view class="head-bottom data-v-1ce3ee54"> å®¡æ ¸ç»æå°éè¿çä¿¡/订é
æ¶æ¯éç¥æ¨ </view></view></view> |
| | | <view class="container data-v-1ce3ee54"><view class="{{['head','data-v-1ce3ee54','head-'+shopAuditStatus]}}"><view class="head-top data-v-1ce3ee54"><image src="{{statusIcon}}" mode="widthFix" class="data-v-1ce3ee54"></image><text class="data-v-1ce3ee54">{{statusText}}</text></view><view class="head-bottom data-v-1ce3ee54">{{''+statusBottomText+''}}</view></view><view class="list data-v-1ce3ee54"><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">æ³¨åææºå·</view><view class="list-item-value data-v-1ce3ee54">{{form.telephone}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">é¨åºåç§°</view><view class="list-item-value data-v-1ce3ee54">{{form.name}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">é¨åºç±»å</view><view class="list-item-value data-v-1ce3ee54">{{form.companyType===0?'个人':'ä¼ä¸'}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">æå¨åå¸</view><view class="list-item-value data-v-1ce3ee54">{{fullAreaName}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">é¨åºå°å</view><view class="list-item-value data-v-1ce3ee54">{{form.address}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">è系人</view><view class="list-item-value data-v-1ce3ee54">{{form.linkName}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">è系人çµè¯</view><view class="list-item-value data-v-1ce3ee54">{{form.linkPhone}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">è系人身份è¯</view><view class="list-item-value data-v-1ce3ee54">{{form.idcard}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">æ¯ä»å®è´¦å·</view><view class="list-item-value data-v-1ce3ee54">{{form.aliAccount}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">æ¯ä»å®å§å</view><view class="list-item-value data-v-1ce3ee54">{{form.aliName}}</view></view><view class="list-item data-v-1ce3ee54" style="flex-direction:column;align-items:flex-start;"><view class="list-item-label data-v-1ce3ee54" style="margin-bottom:30rpx;">èº«ä»½è¯æ£åé¢</view><view class="idcard data-v-1ce3ee54"><block wx:if="{{form.idcardImg}}"><view data-event-opts="{{[['tap',[['previewImage',['$0'],['form.idcardImg']]]]]}}" class="idcard-image data-v-1ce3ee54" bindtap="__e"><image src="{{$root.m0}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block><block wx:if="{{form.idcardImgBack}}"><view data-event-opts="{{[['tap',[['previewImage',['$0'],['form.idcardImgBack']]]]]}}" class="idcard-image data-v-1ce3ee54" bindtap="__e"><image src="{{$root.m1}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block></view></view><view class="list-item data-v-1ce3ee54" style="flex-direction:column;align-items:flex-start;"><view class="list-item-label data-v-1ce3ee54" style="margin-bottom:30rpx;">é¨åºé¨å¤´ç
§ç</view><view class="imgList data-v-1ce3ee54"><block wx:for="{{$root.l0}}" wx:for-item="img" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['previewImage',['$0'],[[['form.storeFrontImgs','',index]]]]]]]}}" class="imgItem data-v-1ce3ee54" bindtap="__e"><image src="{{img.m2}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block></view></view><view class="list-item data-v-1ce3ee54" style="flex-direction:column;align-items:flex-start;"><view class="list-item-label data-v-1ce3ee54" style="margin-bottom:30rpx;">é¨åºå
é¨ç
§ç</view><view class="imgList data-v-1ce3ee54"><block wx:for="{{$root.l1}}" wx:for-item="img" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['previewImage',['$0'],[[['form.storeInteriorImgs','',index]]]]]]]}}" class="imgItem data-v-1ce3ee54" bindtap="__e"><image src="{{img.m3}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block></view></view><view class="list-item data-v-1ce3ee54" style="flex-direction:column;align-items:flex-start;"><view class="list-item-label data-v-1ce3ee54" style="margin-bottom:30rpx;">å
¶ä»ææ</view><view class="imgList data-v-1ce3ee54"><block wx:for="{{$root.l2}}" wx:for-item="img" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['previewImage',['$0'],[[['form.otherMaterialImgs','',index]]]]]]]}}" class="imgItem data-v-1ce3ee54" bindtap="__e"><image src="{{img.m4}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block></view></view><block wx:if="{{form.companyType===0}}"><view class="list-item data-v-1ce3ee54" style="flex-direction:column;align-items:flex-start;"><view class="list-item-label data-v-1ce3ee54" style="margin-bottom:30rpx;">ææå³å·¥åå</view><view class="imgList data-v-1ce3ee54"><block wx:for="{{$root.l3}}" wx:for-item="img" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['previewImage',['$0'],[[['form.laborContractImgs','',index]]]]]]]}}" class="imgItem data-v-1ce3ee54" bindtap="__e"><image src="{{img.m5}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block></view></view><view class="list-item data-v-1ce3ee54" style="flex-direction:column;align-items:flex-start;"><view class="list-item-label data-v-1ce3ee54" style="margin-bottom:30rpx;">ææç¤¾ä¿ç¼´çº³è¯æ</view><view class="imgList data-v-1ce3ee54"><block wx:for="{{$root.l4}}" wx:for-item="img" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['previewImage',['$0'],[[['form.socialSecurityImgs','',index]]]]]]]}}" class="imgItem data-v-1ce3ee54" bindtap="__e"><image src="{{img.m6}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block></view></view></block><block wx:else><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">æ³äººå§å</view><view class="list-item-value data-v-1ce3ee54">{{form.legalPersonName}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">ä¼ä¸æ¯ä»å®è´¦å·</view><view class="list-item-value data-v-1ce3ee54">{{form.aliAccount}}</view></view><view class="list-item data-v-1ce3ee54"><view class="list-item-label data-v-1ce3ee54">æ³äººèº«ä»½è¯å·</view><view class="list-item-value data-v-1ce3ee54">{{form.legalPersonCardNo}}</view></view><view class="list-item data-v-1ce3ee54" style="flex-direction:column;align-items:flex-start;"><view class="list-item-label data-v-1ce3ee54" style="margin-bottom:30rpx;">æ³äººèº«ä»½è¯æ£åé¢</view><view class="idcard data-v-1ce3ee54"><block wx:if="{{form.legalPersonCard}}"><view data-event-opts="{{[['tap',[['previewImage',['$0'],['form.legalPersonCard']]]]]}}" class="idcard-image data-v-1ce3ee54" bindtap="__e"><image src="{{$root.m7}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block><block wx:if="{{form.legalPersonCardBack}}"><view data-event-opts="{{[['tap',[['previewImage',['$0'],['form.legalPersonCardBack']]]]]}}" class="idcard-image data-v-1ce3ee54" bindtap="__e"><image src="{{$root.m8}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block></view></view><view class="list-item data-v-1ce3ee54" style="flex-direction:column;align-items:flex-start;"><view class="list-item-label data-v-1ce3ee54" style="margin-bottom:30rpx;">è¥ä¸æ§ç
§</view><view class="imgList data-v-1ce3ee54"><block wx:if="{{form.businessImg}}"><view data-event-opts="{{[['tap',[['previewImage',['$0'],['form.businessImg']]]]]}}" class="imgItem data-v-1ce3ee54" bindtap="__e"><image src="{{$root.m9}}" mode="aspectFill" class="data-v-1ce3ee54"></image></view></block></view></view></block></view><block wx:if="{{shopAuditStatus===1}}"><view class="footer-btn data-v-1ce3ee54"><view data-event-opts="{{[['tap',[['goToPay',['$event']]]]]}}" class="pay-btn data-v-1ce3ee54" bindtap="__e">{{"æ¯ä»æ¼é ï¿¥"+form.depositAmount}}</view></view></block><block wx:if="{{shopAuditStatus===2}}"><view class="footer-btn data-v-1ce3ee54"><view data-event-opts="{{[['tap',[['goToReapply',['$event']]]]]}}" class="reapply-btn data-v-1ce3ee54" bindtap="__e">éæ°è®¤è¯</view></view></block></view> |
| | |
| | | /* æç« åºæ¯ç¸å
³ */ |
| | | .container.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | padding-bottom: 140rpx; |
| | | } |
| | | .container .list.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | .container .list .list-item.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | padding: 30rpx 0; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | } |
| | | .container .list .list-item .list-item-label.data-v-1ce3ee54 { |
| | | width: 245rpx; |
| | | flex-shrink: 0; |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #777777; |
| | | } |
| | | .container .list .list-item .imgList.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | } |
| | | .container .list .list-item .imgList .imgItem.data-v-1ce3ee54 { |
| | | width: 144rpx; |
| | | height: 144rpx; |
| | | border-radius: 8rpx; |
| | | gap: 20rpx; |
| | | overflow: hidden; |
| | | } |
| | | .container .list .list-item .imgList .imgItem image.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | } |
| | | .container .list .list-item .idcard.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .container .list .list-item .idcard .idcard-image.data-v-1ce3ee54 { |
| | | flex: 1; |
| | | height: 216rpx; |
| | | overflow: hidden; |
| | | border-radius: 8rpx; |
| | | border: 1rpx solid #E5E5E5; |
| | | } |
| | | .container .list .list-item .idcard .idcard-image.data-v-1ce3ee54:first-child { |
| | | margin-right: 22rpx; |
| | | } |
| | | .container .list .list-item .idcard .idcard-image image.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .container .list .list-item .list-item-value.data-v-1ce3ee54 { |
| | | flex: 1; |
| | | text-align: right; |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #222222; |
| | | } |
| | | .container .head.data-v-1ce3ee54 { |
| | | width: 100%; |
| | |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: rgba(255, 114, 0, 0.08); |
| | | } |
| | | .container .head .head-top.data-v-1ce3ee54 { |
| | | display: flex; |
| | |
| | | .container .head .head-top text.data-v-1ce3ee54 { |
| | | font-weight: 600; |
| | | font-size: 40rpx; |
| | | color: #FA8010; |
| | | } |
| | | .container .head .head-bottom.data-v-1ce3ee54 { |
| | | font-weight: 400; |
| | |
| | | color: #333333; |
| | | margin-top: 34rpx; |
| | | } |
| | | .container .head.head-0.data-v-1ce3ee54 { |
| | | background: rgba(255, 114, 0, 0.08); |
| | | } |
| | | .container .head.head-0 .head-top text.data-v-1ce3ee54 { |
| | | color: #FA8010; |
| | | } |
| | | .container .head.head-1.data-v-1ce3ee54 { |
| | | background: rgba(0, 211, 113, 0.1); |
| | | } |
| | | .container .head.head-1 .head-top text.data-v-1ce3ee54 { |
| | | color: #00D371; |
| | | } |
| | | .container .head.head-3.data-v-1ce3ee54 { |
| | | background: rgba(0, 211, 113, 0.1); |
| | | } |
| | | .container .head.head-3 .head-top text.data-v-1ce3ee54 { |
| | | color: #00D371; |
| | | } |
| | | .container .head.head-2.data-v-1ce3ee54 { |
| | | background: rgba(255, 0, 0, 0.08); |
| | | } |
| | | .container .head.head-2 .head-top text.data-v-1ce3ee54 { |
| | | color: #FF0000; |
| | | } |
| | | .container .footer-btn.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | padding: 20rpx 30rpx; |
| | | box-sizing: border-box; |
| | | background: #fff; |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | } |
| | | .container .footer-btn .pay-btn.data-v-1ce3ee54, .container .footer-btn .reapply-btn.data-v-1ce3ee54 { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | background: #10B2FA; |
| | | border-radius: 44rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #fff; |
| | | } |
| | | |
| | |
| | | var _vm = this |
| | | var _h = _vm.$createElement |
| | | var _c = _vm._self._c || _h |
| | | var l0 = _vm.__map(_vm.menuList, function (item, __i0__) { |
| | | var $orig = _vm.__get_orig(item) |
| | | var g0 = ["é¨åºå
¥é©»", "é¨åºä¿¡æ¯"].includes(item.label) |
| | | return { |
| | | $orig: $orig, |
| | | g0: g0, |
| | | } |
| | | }) |
| | | _vm.$mp.data = Object.assign( |
| | | {}, |
| | | { |
| | | $root: { |
| | | l0: l0, |
| | | }, |
| | | } |
| | | ) |
| | | } |
| | | var recyclableRender = false |
| | | var staticRenderFns = [] |
| | |
| | | return _this.$onLaunched; |
| | | case 2: |
| | | if (_this.userInfo) { |
| | | if (_this.userInfo.shopAuditStatus === 3) { |
| | | _this.menuList[0].label = 'é¨åºä¿¡æ¯'; |
| | | } |
| | | _this.getOrderNum(); |
| | | } |
| | | case 3: |
| | |
| | | 'è§èé¡»ç¥': '/pages/rich-text/rich-text?type=serverIntroduce', |
| | | 'å
³äºæä»¬': '/pages/rich-text/rich-text?type=about' |
| | | }; |
| | | if (item.label === 'é¨åºå
¥é©»' && [0, 1, 2].includes(this.userInfo.shopAuditStatus)) { |
| | | if (['é¨åºå
¥é©»', 'é¨åºä¿¡æ¯'].includes(item.label) && [0, 1, 2, 3].includes(this.userInfo.shopAuditStatus)) { |
| | | uni.navigateTo({ |
| | | url: '/pages/details-entry/details-entry' |
| | | }); |
| | |
| | | <view class="mine-page data-v-dcbcfe34"><view class="top-bg data-v-dcbcfe34"></view><view class="nav-wrap data-v-dcbcfe34"><view style="{{'width:'+('100%')+';'+('height:'+(statusbarHeight+'px')+';')}}" class="data-v-dcbcfe34"></view><view style="{{'width:'+('100%')+';'+('height:'+(navHeight+'px')+';')}}" class="data-v-dcbcfe34"></view></view><view class="page-scroll data-v-dcbcfe34"><view class="page-content data-v-dcbcfe34"><view class="profile-card data-v-dcbcfe34"><button open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getphonenumber',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-dcbcfe34">ææææºå·</button><image class="avatar data-v-dcbcfe34" src="{{userInfo.fullCoverImage?userInfo.fullCoverImage:'/static/image/tx@2x.png'}}" mode="widthFix"></image><view class="profile-copy data-v-dcbcfe34"><text class="login-text data-v-dcbcfe34">{{userInfo.nickName||'ç¹å»ç»å½'}}</text></view><block wx:if="{{userInfo}}"><view class="profile-tools data-v-dcbcfe34"><view data-event-opts="{{[['tap',[['toSetting',['$event']]]]]}}" class="tool-item data-v-dcbcfe34" bindtap="__e"><image class="tool-icon data-v-dcbcfe34" src="/static/icon/ic_option@2x.png" mode="aspectFit"></image></view><view class="tool-item has-badge data-v-dcbcfe34"><image class="tool-icon data-v-dcbcfe34" src="/static/icon/ic_notice@2x.png" mode="aspectFit"></image><block wx:if="{{userInfo.hasMessage}}"><view class="tool-badge data-v-dcbcfe34"></view></block></view></view></block></view><view class="order-card section-card data-v-dcbcfe34"><view class="section-head data-v-dcbcfe34"><text class="section-title data-v-dcbcfe34">æç订å</text><view data-event-opts="{{[['tap',[['toAllOrders',['$event']]]]]}}" class="more-wrap data-v-dcbcfe34" bindtap="__e"><text class="more-text data-v-dcbcfe34">å
¨é¨è®¢å</text><u-icon vue-id="bae1c640-1" name="arrow-right" size="13" color="#999999" class="data-v-dcbcfe34" bind:__l="__l"></u-icon></view></view><view class="order-grid data-v-dcbcfe34"><block wx:for="{{orderMenus}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['toOrderDetail',['$0'],[[['orderMenus','',index,'label']]]]]]]}}" class="order-item data-v-dcbcfe34" bindtap="__e"><image class="order-icon data-v-dcbcfe34" src="{{item.url}}" mode="widthFix"></image><block wx:if="{{item.badge}}"><view class="order-badge data-v-dcbcfe34">{{item.badge}}</view></block><text class="order-label data-v-dcbcfe34">{{item.label}}</text></view></block></view></view><view class="banner-card data-v-dcbcfe34"><image class="banner-image data-v-dcbcfe34" src="/static/image/share@2x.png" mode="widthFix"></image></view><view class="menu-card section-card data-v-dcbcfe34"><block wx:for="{{menuList}}" wx:for-item="item" wx:for-index="__i0__" wx:key="label"><view data-event-opts="{{[['tap',[['handleMenuClick',['$0'],[[['menuList','label',item.label]]]]]]]}}" class="menu-row data-v-dcbcfe34" bindtap="__e"><text class="menu-label data-v-dcbcfe34">{{item.label}}</text><view class="right-icon data-v-dcbcfe34"><block wx:if="{{item.label==='é¨åºå
¥é©»'}}"><text class="{{['data-v-dcbcfe34',(userInfo.shopAuditStatus===1||userInfo.shopAuditStatus===2)?'status-red':'']}}">{{''+(userInfo.shopAuditStatus===0?'å®¡æ ¸ä¸':userInfo.shopAuditStatus===1?'å®¡æ ¸éè¿ï¼è¯·æ¯ä»æ¼é':userInfo.shopAuditStatus===2?'å®¡æ ¸æªéè¿':'ç³è¯·å
¥é©»')+''}}</text></block><u-icon vue-id="{{'bae1c640-2-'+__i0__}}" name="arrow-right" size="18" color="#B5BBC5" class="data-v-dcbcfe34" bind:__l="__l"></u-icon></view></view></block></view></view></view></view> |
| | | <view class="mine-page data-v-dcbcfe34"><view class="top-bg data-v-dcbcfe34"></view><view class="nav-wrap data-v-dcbcfe34"><view style="{{'width:'+('100%')+';'+('height:'+(statusbarHeight+'px')+';')}}" class="data-v-dcbcfe34"></view><view style="{{'width:'+('100%')+';'+('height:'+(navHeight+'px')+';')}}" class="data-v-dcbcfe34"></view></view><view class="page-scroll data-v-dcbcfe34"><view class="page-content data-v-dcbcfe34"><view class="profile-card data-v-dcbcfe34"><button open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getphonenumber',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-dcbcfe34">ææææºå·</button><image class="avatar data-v-dcbcfe34" src="{{userInfo.fullCoverImage?userInfo.fullCoverImage:'/static/image/tx@2x.png'}}" mode="widthFix"></image><view class="profile-copy data-v-dcbcfe34"><text class="login-text data-v-dcbcfe34">{{userInfo.nickName||'ç¹å»ç»å½'}}</text></view><block wx:if="{{userInfo}}"><view class="profile-tools data-v-dcbcfe34"><view data-event-opts="{{[['tap',[['toSetting',['$event']]]]]}}" class="tool-item data-v-dcbcfe34" bindtap="__e"><image class="tool-icon data-v-dcbcfe34" src="/static/icon/ic_option@2x.png" mode="aspectFit"></image></view><view class="tool-item has-badge data-v-dcbcfe34"><image class="tool-icon data-v-dcbcfe34" src="/static/icon/ic_notice@2x.png" mode="aspectFit"></image><block wx:if="{{userInfo.hasMessage}}"><view class="tool-badge data-v-dcbcfe34"></view></block></view></view></block></view><view class="order-card section-card data-v-dcbcfe34"><view class="section-head data-v-dcbcfe34"><text class="section-title data-v-dcbcfe34">æç订å</text><view data-event-opts="{{[['tap',[['toAllOrders',['$event']]]]]}}" class="more-wrap data-v-dcbcfe34" bindtap="__e"><text class="more-text data-v-dcbcfe34">å
¨é¨è®¢å</text><u-icon vue-id="bae1c640-1" name="arrow-right" size="13" color="#999999" class="data-v-dcbcfe34" bind:__l="__l"></u-icon></view></view><view class="order-grid data-v-dcbcfe34"><block wx:for="{{orderMenus}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['toOrderDetail',['$0'],[[['orderMenus','',index,'label']]]]]]]}}" class="order-item data-v-dcbcfe34" bindtap="__e"><image class="order-icon data-v-dcbcfe34" src="{{item.url}}" mode="widthFix"></image><block wx:if="{{item.badge}}"><view class="order-badge data-v-dcbcfe34">{{item.badge}}</view></block><text class="order-label data-v-dcbcfe34">{{item.label}}</text></view></block></view></view><view class="banner-card data-v-dcbcfe34"><image class="banner-image data-v-dcbcfe34" src="/static/image/share@2x.png" mode="widthFix"></image></view><view class="menu-card section-card data-v-dcbcfe34"><block wx:for="{{$root.l0}}" wx:for-item="item" wx:for-index="__i0__" wx:key="label"><view data-event-opts="{{[['tap',[['handleMenuClick',['$0'],[[['menuList','label',item.$orig.label]]]]]]]}}" class="menu-row data-v-dcbcfe34" bindtap="__e"><text class="menu-label data-v-dcbcfe34">{{item.$orig.label}}</text><view class="right-icon data-v-dcbcfe34"><block wx:if="{{item.g0}}"><text class="{{['data-v-dcbcfe34',(userInfo.shopAuditStatus===1||userInfo.shopAuditStatus===2)?'status-red':'']}}">{{''+(userInfo.shopAuditStatus===0?'å®¡æ ¸ä¸':userInfo.shopAuditStatus===1?'å®¡æ ¸éè¿ï¼è¯·æ¯ä»æ¼é':userInfo.shopAuditStatus===2?'å®¡æ ¸æªéè¿':userInfo.shopAuditStatus===3?'é¨åºå·²å
¥é©»':'')+''}}</text></block><u-icon vue-id="{{'bae1c640-2-'+__i0__}}" name="arrow-right" size="18" color="#B5BBC5" class="data-v-dcbcfe34" bind:__l="__l"></u-icon></view></view></block></view></view></view></view> |
| | |
| | | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } |
| | | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } |
| | | var _default = { |
| | | computed: _objectSpread({}, (0, _vuex.mapState)(['userInfo'])), |
| | | computed: _objectSpread(_objectSpread({}, (0, _vuex.mapState)(['userInfo'])), {}, { |
| | | fullAreaName: function fullAreaName() { |
| | | var arr = [this.form.provinceName, this.form.cityName, this.form.areaName].filter(Boolean); |
| | | return arr.join('/'); |
| | | } |
| | | }), |
| | | data: function data() { |
| | | return { |
| | | form: { |
| | | telephone: '', |
| | | companyType: 0, |
| | | name: '', |
| | | provinceName: '', |
| | | cityName: '', |
| | | areaName: '', |
| | | areaId: '', |
| | | longitude: '', |
| | | latitude: '', |
| | |
| | | legalPersonName: '', |
| | | legalPersonPhone: '', |
| | | aliAccount: '', |
| | | aliName: '', |
| | | businessImg: '' |
| | | }, |
| | | previewMode: 'filled', |
| | | imgPrefix: '', |
| | | currentStep: 1, |
| | | qualificationType: 'company', |
| | | showAreaPicker: false, |
| | |
| | | switch (_context.prev = _context.next) { |
| | | case 0: |
| | | if (!(_this.form.companyType === 0)) { |
| | | _context.next = 15; |
| | | _context.next = 21; |
| | | break; |
| | | } |
| | | if (_this.form.idcardImg) { |
| | |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 7: |
| | | if (!(!_this.form.laborContractImgs || _this.form.laborContractImgs.length === 0)) { |
| | | if (_this.form.aliAccount) { |
| | | _context.next = 10; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | | title: '请è¾å
¥ä¸ªäººæ¯ä»å®è´¦å·', |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 10: |
| | | if (_this.form.aliName) { |
| | | _context.next = 13; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | | title: '请è¾å
¥æ¯ä»å®å§å', |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 13: |
| | | if (!(!_this.form.laborContractImgs || _this.form.laborContractImgs.length === 0)) { |
| | | _context.next = 16; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 10: |
| | | case 16: |
| | | if (!(!_this.form.socialSecurityImgs || _this.form.socialSecurityImgs.length === 0)) { |
| | | _context.next = 13; |
| | | _context.next = 19; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 13: |
| | | _context.next = 30; |
| | | case 19: |
| | | _context.next = 39; |
| | | break; |
| | | case 15: |
| | | case 21: |
| | | if (_this.form.legalPersonName) { |
| | | _context.next = 18; |
| | | _context.next = 24; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 18: |
| | | case 24: |
| | | if (_this.form.aliAccount) { |
| | | _context.next = 21; |
| | | _context.next = 27; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 21: |
| | | case 27: |
| | | if (_this.form.aliName) { |
| | | _context.next = 30; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | | title: '请è¾å
¥æ¯ä»å®å§å', |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 30: |
| | | if (_this.form.legalPersonCard) { |
| | | _context.next = 24; |
| | | _context.next = 33; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 24: |
| | | case 33: |
| | | if (_this.form.legalPersonCardBack) { |
| | | _context.next = 27; |
| | | _context.next = 36; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 27: |
| | | case 36: |
| | | if (_this.form.businessImg) { |
| | | _context.next = 30; |
| | | _context.next = 39; |
| | | break; |
| | | } |
| | | uni.showToast({ |
| | |
| | | icon: 'none' |
| | | }); |
| | | return _context.abrupt("return"); |
| | | case 30: |
| | | case 39: |
| | | uni.showLoading({ |
| | | title: 'æäº¤ä¸...', |
| | | mask: true |
| | | }); |
| | | _context.prev = 31; |
| | | _context.next = 34; |
| | | _context.prev = 40; |
| | | _context.next = 43; |
| | | return _this.$u.api.applyShop(_this.form); |
| | | case 34: |
| | | case 43: |
| | | res = _context.sent; |
| | | uni.hideLoading(); |
| | | if (res.code === 200) { |
| | |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | _context.next = 43; |
| | | _context.next = 52; |
| | | break; |
| | | case 39: |
| | | _context.prev = 39; |
| | | _context.t0 = _context["catch"](31); |
| | | case 48: |
| | | _context.prev = 48; |
| | | _context.t0 = _context["catch"](40); |
| | | uni.hideLoading(); |
| | | uni.showToast({ |
| | | title: 'æäº¤å¤±è´¥', |
| | | icon: 'none' |
| | | }); |
| | | case 43: |
| | | case 52: |
| | | case "end": |
| | | return _context.stop(); |
| | | } |
| | | } |
| | | }, _callee, null, [[31, 39]]); |
| | | }, _callee, null, [[40, 48]]); |
| | | }))(); |
| | | }, |
| | | getMyShopData: function getMyShopData() { |
| | | var _this2 = this; |
| | | return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { |
| | | var res, data, imgPrefix, storeFrontImgs, storeInteriorImgs, otherMaterialImgs, laborContractImgs, socialSecurityImgs; |
| | | var res, data, imgPrefix; |
| | | return _regenerator.default.wrap(function _callee2$(_context2) { |
| | | while (1) { |
| | | switch (_context2.prev = _context2.next) { |
| | |
| | | if (res.code === 200 && res.data) { |
| | | data = res.data; |
| | | imgPrefix = data.imgPrefix || ''; |
| | | _this2.imgPrefix = data.imgPrefix || ''; |
| | | _this2.form.name = data.name || ''; |
| | | _this2.form.areaId = data.areaId || ''; |
| | | _this2.form.provinceName = data.provinceName || ''; |
| | | _this2.form.cityName = data.cityName || ''; |
| | | _this2.form.areaName = data.areaName || ''; |
| | | _this2.form.areaId = data.areaId || ''; |
| | | _this2.form.address = data.address || ''; |
| | | _this2.form.longitude = data.longitude || ''; |
| | | _this2.form.latitude = data.latitude || ''; |
| | |
| | | _this2.form.linkPhone = data.linkPhone || ''; |
| | | _this2.form.idcard = data.idcard || ''; |
| | | _this2.form.aliAccount = data.aliAccount || ''; |
| | | _this2.form.aliName = data.aliName || ''; |
| | | _this2.form.companyType = data.companyType || 0; |
| | | _this2.form.telephone = data.telephone || _this2.userInfo.telephone || ''; |
| | | _this2.form.legalPersonName = data.legalPersonName || ''; |
| | | _this2.form.legalPersonPhone = data.legalPersonPhone || ''; |
| | | _this2.qualificationType = data.companyType === 0 ? 'personal' : 'company'; |
| | | if (data.storeFrontImgs) { |
| | | storeFrontImgs = data.storeFrontImgs; |
| | | if (typeof storeFrontImgs === 'string') { |
| | | storeFrontImgs = storeFrontImgs.split(','); |
| | | } |
| | | _this2.storeFrontImages = storeFrontImgs; |
| | | _this2.uploadedImagesStoreFront = storeFrontImgs.map(function (url) { |
| | | _this2.storeFrontImages = data.storeFrontImgUrls; |
| | | _this2.uploadedImagesStoreFront = data.storeFrontImgUrls.map(function (url) { |
| | | return { |
| | | url: imgPrefix + url |
| | | url: url |
| | | }; |
| | | }); |
| | | _this2.form.storeFrontImgs = storeFrontImgs; |
| | | _this2.form.storeFrontImgs = data.storeFrontImgs; |
| | | } |
| | | if (data.storeInteriorImgs) { |
| | | storeInteriorImgs = data.storeInteriorImgs; |
| | | if (typeof storeInteriorImgs === 'string') { |
| | | storeInteriorImgs = storeInteriorImgs.split(','); |
| | | } |
| | | _this2.idCardImages = storeInteriorImgs; |
| | | _this2.uploadedImagesIdCard = storeInteriorImgs.map(function (url) { |
| | | _this2.idCardImages = data.storeInteriorImgUrls; |
| | | _this2.uploadedImagesIdCard = data.storeInteriorImgUrls.map(function (url) { |
| | | return { |
| | | url: imgPrefix + url |
| | | url: url |
| | | }; |
| | | }); |
| | | _this2.form.storeInteriorImgs = storeInteriorImgs; |
| | | _this2.form.storeInteriorImgs = data.storeInteriorImgs; |
| | | } |
| | | if (data.otherMaterialImgs) { |
| | | otherMaterialImgs = data.otherMaterialImgs; |
| | | if (typeof otherMaterialImgs === 'string') { |
| | | otherMaterialImgs = otherMaterialImgs.split(','); |
| | | } |
| | | _this2.permitImages = otherMaterialImgs; |
| | | _this2.uploadedImagesPermit = otherMaterialImgs.map(function (url) { |
| | | _this2.permitImages = data.otherMaterialImgUrls; |
| | | _this2.uploadedImagesPermit = data.otherMaterialImgUrls.map(function (url) { |
| | | return { |
| | | url: imgPrefix + url |
| | | url: url |
| | | }; |
| | | }); |
| | | _this2.form.otherMaterialImgs = otherMaterialImgs; |
| | | _this2.form.otherMaterialImgs = data.otherMaterialImgs; |
| | | } |
| | | _this2.form.idcardImg = data.idcardImg ? imgPrefix + data.idcardImg : ''; |
| | | _this2.form.idcardImgBack = data.idcardImgBack ? imgPrefix + data.idcardImgBack : ''; |
| | | _this2.form.idcardImg = data.idcardImg || ''; |
| | | _this2.form.idcardImgBack = data.idcardImgBack || ''; |
| | | if (data.laborContractImgs) { |
| | | laborContractImgs = data.laborContractImgs; |
| | | if (typeof laborContractImgs === 'string') { |
| | | laborContractImgs = laborContractImgs.split(','); |
| | | } |
| | | _this2.laborContractImages = laborContractImgs; |
| | | _this2.uploadedLaborContractImages = laborContractImgs.map(function (url) { |
| | | _this2.laborContractImages = data.laborContractImgUrls; |
| | | _this2.uploadedLaborContractImages = data.laborContractImgUrls.map(function (url) { |
| | | return { |
| | | url: imgPrefix + url |
| | | url: url |
| | | }; |
| | | }); |
| | | _this2.form.laborContractImgs = laborContractImgs; |
| | | _this2.form.laborContractImgs = data.laborContractImgs; |
| | | } |
| | | if (data.socialSecurityImgs) { |
| | | socialSecurityImgs = data.socialSecurityImgs; |
| | | if (typeof socialSecurityImgs === 'string') { |
| | | socialSecurityImgs = socialSecurityImgs.split(','); |
| | | } |
| | | _this2.socialSecurityImages = socialSecurityImgs; |
| | | _this2.uploadedSocialSecurityImages = socialSecurityImgs.map(function (url) { |
| | | _this2.socialSecurityImages = data.socialSecurityImgUrls; |
| | | _this2.uploadedSocialSecurityImages = data.socialSecurityImgUrls.map(function (url) { |
| | | return { |
| | | url: imgPrefix + url |
| | | url: url |
| | | }; |
| | | }); |
| | | _this2.form.socialSecurityImgs = socialSecurityImgs; |
| | | _this2.form.socialSecurityImgs = data.socialSecurityImgs; |
| | | } |
| | | _this2.form.legalPersonCard = data.legalPersonCard ? imgPrefix + data.legalPersonCard : ''; |
| | | _this2.form.legalPersonCardBack = data.legalPersonCardBack ? imgPrefix + data.legalPersonCardBack : ''; |
| | | _this2.form.businessImg = data.businessImg ? imgPrefix + data.businessImg : ''; |
| | | _this2.form.legalPersonCard = data.legalPersonCard || ''; |
| | | _this2.form.legalPersonCardBack = data.legalPersonCardBack || ''; |
| | | _this2.form.businessImg = data.businessImg || ''; |
| | | if (data.businessImg) { |
| | | _this2.businessImages = [data.businessImg]; |
| | | _this2.businessImages = [data.businessImgUrl]; |
| | | } |
| | | } |
| | | _context2.next = 10; |
| | |
| | | }, |
| | | getShortPath: function getShortPath(url) { |
| | | if (!url) return ''; |
| | | var baseUrl = this.$baseUrl || ''; |
| | | if (url.startsWith('http')) { |
| | | return url; |
| | | return url.replace(this.imgPrefix, ''); |
| | | } |
| | | return url.replace(baseUrl, ''); |
| | | return url; |
| | | }, |
| | | getFullPath: function getFullPath(url) { |
| | | if (!url) return ''; |
| | |
| | | <view class="store-apply-page data-v-43aee78c"><view class="top-gradient data-v-43aee78c"></view><view class="process-wrap data-v-43aee78c"><view data-event-opts="{{[['tap',[['e0',['$event']]]]]}}" class="{{['process-step','data-v-43aee78c',(currentStep===1)?'active':'']}}" bindtap="__e"><view class="step-dot data-v-43aee78c"></view><text class="data-v-43aee78c">é¨åºä¿¡æ¯</text></view><view class="process-line data-v-43aee78c"></view><view data-event-opts="{{[['tap',[['e1',['$event']]]]]}}" class="{{['process-step','data-v-43aee78c',(currentStep===2)?'active':'']}}" bindtap="__e"><view class="step-dot step-index data-v-43aee78c">2</view><text class="data-v-43aee78c">主ä½èµè´¨</text></view></view><block wx:if="{{currentStep===1}}"><view class="form-card data-v-43aee78c"><text class="card-title data-v-43aee78c">é¨åºä¿¡æ¯</text><text class="register-no data-v-43aee78c">{{"æ³¨åææºå·ï¼"+(userInfo.telephone||'')}}</text><view class="form-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºåç§°</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥é¨åºåç§°" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','name','$event',[]],['form']]]]]}}" value="{{form.name}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group select-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æå¨åå¸</text><text class="required data-v-43aee78c">*</text></view><view data-event-opts="{{[['tap',[['e2',['$event']]]]]}}" class="select-row data-v-43aee78c" bindtap="__e"><text class="{{['select-text','data-v-43aee78c',(!form.areaName)?'placeholder':'']}}">{{form.areaName||'è¯·éæ©çå¸åº'}}</text><u-icon vue-id="322e8afa-1" name="arrow-right" size="18" color="#9FA6B2" class="data-v-43aee78c" bind:__l="__l"></u-icon></view></view><block wx:if="{{$root.g0}}"><u-picker vue-id="322e8afa-2" show="{{showAreaPicker}}" confirmColor="#10B2FA" keyName="text" columns="{{areaColumns}}" data-ref="uPicker" data-event-opts="{{[['^confirm',[['confirmArea']]],['^change',[['changeAreaHandler']]],['^cancel',[['e3']]]]}}" bind:confirm="__e" bind:change="__e" bind:cancel="__e" class="data-v-43aee78c vue-ref" bind:__l="__l"></u-picker></block><view class="divider data-v-43aee78c"></view><view class="form-group select-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºå°å</text><text class="required data-v-43aee78c">*</text></view><view data-event-opts="{{[['tap',[['chooseAddress',['$event']]]]]}}" class="select-row data-v-43aee78c" bindtap="__e"><text class="{{['select-text','data-v-43aee78c',(!form.address)?'placeholder':'']}}">{{form.address||'è¯·éæ©å°å'}}</text><u-icon vue-id="322e8afa-3" name="arrow-right" size="18" color="#9FA6B2" class="data-v-43aee78c" bind:__l="__l"></u-icon></view></view><view class="divider data-v-43aee78c"></view><view class="form-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">è系人</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥è系人å§å" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','linkName','$event',[]],['form']]]]]}}" value="{{form.linkName}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group phone-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">è系人çµè¯</text><text class="required data-v-43aee78c">*</text></view><view class="input-with-icon data-v-43aee78c"><input class="text-input data-v-43aee78c" type="number" maxlength="11" placeholder="请è¾å
¥è系人çµè¯" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','linkPhone','$event',[]],['form']]]]]}}" value="{{form.linkPhone}}" bindinput="__e"/><view class="clear-icon data-v-43aee78c"></view></view></view><view class="divider data-v-43aee78c"></view><view class="form-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">è系人身份è¯å·</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" type="idcard" maxlength="18" placeholder="请è¾å
¥è系人身份è¯å·" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','idcard','$event',[]],['form']]]]]}}" value="{{form.idcard}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="upload-section data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºé¨å¤´ç
§ç</text><text class="required data-v-43aee78c">*</text></view><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseStoreFrontImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedImagesStoreFront}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deleteStoreFrontImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view><view class="upload-section data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºå
鍿ç</text><text class="required data-v-43aee78c">*</text></view><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseIdCardImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedImagesIdCard}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deleteIdCardImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view><view class="upload-section last-upload data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><text class="label data-v-43aee78c">å
¶ä»ææ</text><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['choosePermitImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedImagesPermit}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deletePermitImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view></view></block><block wx:else><view class="form-card data-v-43aee78c"><text class="card-title data-v-43aee78c">主ä½èµè´¨</text><view class="form-group subject-first-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºç±»å</text><text class="required data-v-43aee78c">*</text></view><view class="switch-row type-switch-row data-v-43aee78c"><view data-event-opts="{{[['tap',[['switchQualification',['personal']]]]]}}" class="{{['switch-pill','data-v-43aee78c',(qualificationType==='personal')?'active':'']}}" bindtap="__e">个人</view><view data-event-opts="{{[['tap',[['switchQualification',['company']]]]]}}" class="{{['switch-pill','data-v-43aee78c',(qualificationType==='company')?'active':'']}}" bindtap="__e">ä¼ä¸</view></view></view><block wx:if="{{qualificationType==='personal'}}"><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ¯ä»å®è´¦å·</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥ä¸ªäººæ¯ä»å®è´¦å·" placeholder-class="placeholder" data-event-opts="{{[['input',[['__set_model',['$0','aliAccount','$event',[]],['form']]]]]}}" value="{{form.aliAccount}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="upload-section subject-upload-section data-v-43aee78c"><view class="upload-title-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">èº«ä»½è¯æ£åé¢</text><text class="required data-v-43aee78c">*</text></view></view><view class="upload-grid double-upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseIdCardFront',['$event']]]]]}}" class="upload-box id-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.idcardImg}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m0}}" mode="aspectFill"></image></block><block wx:if="{{!form.idcardImg}}"><text class="upload-text data-v-43aee78c">ä¸ä¼ 人åé¢</text></block></view><view data-event-opts="{{[['tap',[['chooseIdCardBack',['$event']]]]]}}" class="upload-box id-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.idcardImgBack}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m1}}" mode="aspectFill"></image></block><block wx:if="{{!form.idcardImgBack}}"><text class="upload-text data-v-43aee78c">ä¸ä¼ å½å¾½é¢</text></block></view></view></view><view class="upload-section subject-upload-section data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">ææå³å¨åå</text><text class="required data-v-43aee78c">*</text></view><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseLaborContractImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedLaborContractImages}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deleteLaborContractImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view><view class="upload-section last-upload data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">社ä¿ç¼´çº³è¯æ</text><text class="required data-v-43aee78c">*</text></view><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseSocialSecurityImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedSocialSecurityImages}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deleteSocialSecurityImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view></block><block wx:else><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ³äººå§å</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥æ³äººå§å" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','legalPersonName','$event',[]],['form']]]]]}}" value="{{form.legalPersonName}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">ä¼ä¸æ¯ä»å®è´¦å·</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥ä¼ä¸æ¯ä»å®è´¦å·" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','aliAccount','$event',[]],['form']]]]]}}" value="{{form.aliAccount}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ³äººèº«ä»½è¯å·</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥æ³äººèº«ä»½è¯å·ç " placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','legalPersonCard','$event',[]],['form']]]]]}}" value="{{form.legalPersonCard}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="upload-section subject-upload-section data-v-43aee78c"><view class="upload-title-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ³äººèº«ä»½è¯æ£åé¢</text><text class="required data-v-43aee78c">*</text></view></view><view class="upload-grid double-upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseLegalPersonCardFront',['$event']]]]]}}" class="upload-box id-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.legalPersonCard}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m2}}" mode="aspectFill"></image></block><block wx:if="{{!form.legalPersonCard}}"><text class="upload-text data-v-43aee78c">ä¸ä¼ 人åé¢</text></block></view><view data-event-opts="{{[['tap',[['chooseLegalPersonCardBack',['$event']]]]]}}" class="upload-box id-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.legalPersonCardBack}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m3}}" mode="aspectFill"></image></block><block wx:if="{{!form.legalPersonCardBack}}"><text class="upload-text data-v-43aee78c">ä¸ä¼ å½å¾½é¢</text></block></view></view></view><view class="upload-section last-upload data-v-43aee78c"><view class="upload-title-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">è¥ä¸æ§ç
§</text><text class="required data-v-43aee78c">*</text></view></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseBusinessImage',['$event']]]]]}}" class="upload-box license-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.businessImg}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m4}}" mode="aspectFill"></image></block><block wx:if="{{!form.businessImg}}"><text class="upload-text data-v-43aee78c">ç¹å»ä¸ä¼ </text></block></view></view></view></block></view></block><view class="bottom-btn-wrap data-v-43aee78c"><block wx:if="{{currentStep===1}}"><view data-event-opts="{{[['tap',[['goToStep2',['$event']]]]]}}" class="next-btn data-v-43aee78c" bindtap="__e">ä¸ä¸æ¥</view></block><block wx:else><view data-event-opts="{{[['tap',[['e4',['$event']]]]]}}" class="footer-btn footer-plain-btn data-v-43aee78c" bindtap="__e">ä¸ä¸æ¥</view><view data-event-opts="{{[['tap',[['submitApply',['$event']]]]]}}" class="footer-btn footer-primary-btn data-v-43aee78c" bindtap="__e">æäº¤å
¥é©»ç³è¯·</view></block></view></view> |
| | | <view class="store-apply-page data-v-43aee78c"><view class="top-gradient data-v-43aee78c"></view><view class="process-wrap data-v-43aee78c"><view data-event-opts="{{[['tap',[['e0',['$event']]]]]}}" class="{{['process-step','data-v-43aee78c',(currentStep===1)?'active':'']}}" bindtap="__e"><view class="step-dot data-v-43aee78c"></view><text class="data-v-43aee78c">é¨åºä¿¡æ¯</text></view><view class="process-line data-v-43aee78c"></view><view data-event-opts="{{[['tap',[['e1',['$event']]]]]}}" class="{{['process-step','data-v-43aee78c',(currentStep===2)?'active':'']}}" bindtap="__e"><view class="step-dot step-index data-v-43aee78c">2</view><text class="data-v-43aee78c">主ä½èµè´¨</text></view></view><block wx:if="{{currentStep===1}}"><view class="form-card data-v-43aee78c"><text class="card-title data-v-43aee78c">é¨åºä¿¡æ¯</text><text class="register-no data-v-43aee78c">{{"æ³¨åææºå·ï¼"+(userInfo.telephone||'')}}</text><view class="form-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºåç§°</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥é¨åºåç§°" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','name','$event',[]],['form']]]]]}}" value="{{form.name}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group select-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æå¨åå¸</text><text class="required data-v-43aee78c">*</text></view><view data-event-opts="{{[['tap',[['e2',['$event']]]]]}}" class="select-row data-v-43aee78c" bindtap="__e"><text class="{{['select-text','data-v-43aee78c',(!fullAreaName)?'placeholder':'']}}">{{fullAreaName||'è¯·éæ©çå¸åº'}}</text><u-icon vue-id="322e8afa-1" name="arrow-right" size="18" color="#9FA6B2" class="data-v-43aee78c" bind:__l="__l"></u-icon></view></view><block wx:if="{{$root.g0}}"><u-picker vue-id="322e8afa-2" show="{{showAreaPicker}}" confirmColor="#10B2FA" keyName="text" columns="{{areaColumns}}" data-ref="uPicker" data-event-opts="{{[['^confirm',[['confirmArea']]],['^change',[['changeAreaHandler']]],['^cancel',[['e3']]]]}}" bind:confirm="__e" bind:change="__e" bind:cancel="__e" class="data-v-43aee78c vue-ref" bind:__l="__l"></u-picker></block><view class="divider data-v-43aee78c"></view><view class="form-group select-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºå°å</text><text class="required data-v-43aee78c">*</text></view><view data-event-opts="{{[['tap',[['chooseAddress',['$event']]]]]}}" class="select-row data-v-43aee78c" bindtap="__e"><text class="{{['select-text','data-v-43aee78c',(!form.address)?'placeholder':'']}}">{{form.address||'è¯·éæ©å°å'}}</text><u-icon vue-id="322e8afa-3" name="arrow-right" size="18" color="#9FA6B2" class="data-v-43aee78c" bind:__l="__l"></u-icon></view></view><view class="divider data-v-43aee78c"></view><view class="form-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">è系人</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥è系人å§å" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','linkName','$event',[]],['form']]]]]}}" value="{{form.linkName}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group phone-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">è系人çµè¯</text><text class="required data-v-43aee78c">*</text></view><view class="input-with-icon data-v-43aee78c"><input class="text-input data-v-43aee78c" type="number" maxlength="11" placeholder="请è¾å
¥è系人çµè¯" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','linkPhone','$event',[]],['form']]]]]}}" value="{{form.linkPhone}}" bindinput="__e"/><view class="clear-icon data-v-43aee78c"></view></view></view><view class="divider data-v-43aee78c"></view><view class="form-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">è系人身份è¯å·</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" type="idcard" maxlength="18" placeholder="请è¾å
¥è系人身份è¯å·" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','idcard','$event',[]],['form']]]]]}}" value="{{form.idcard}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="upload-section data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºé¨å¤´ç
§ç</text><text class="required data-v-43aee78c">*</text></view><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseStoreFrontImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedImagesStoreFront}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deleteStoreFrontImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view><view class="upload-section data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºå
鍿ç</text><text class="required data-v-43aee78c">*</text></view><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseIdCardImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedImagesIdCard}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deleteIdCardImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view><view class="upload-section last-upload data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><text class="label data-v-43aee78c">å
¶ä»ææ</text><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['choosePermitImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedImagesPermit}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deletePermitImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view></view></block><block wx:else><view class="form-card data-v-43aee78c"><text class="card-title data-v-43aee78c">主ä½èµè´¨</text><view class="form-group subject-first-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">é¨åºç±»å</text><text class="required data-v-43aee78c">*</text></view><view class="switch-row type-switch-row data-v-43aee78c"><view data-event-opts="{{[['tap',[['switchQualification',['personal']]]]]}}" class="{{['switch-pill','data-v-43aee78c',(qualificationType==='personal')?'active':'']}}" bindtap="__e">个人</view><view data-event-opts="{{[['tap',[['switchQualification',['company']]]]]}}" class="{{['switch-pill','data-v-43aee78c',(qualificationType==='company')?'active':'']}}" bindtap="__e">ä¼ä¸</view></view></view><block wx:if="{{qualificationType==='personal'}}"><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ¯ä»å®è´¦å·</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥ä¸ªäººæ¯ä»å®è´¦å·" placeholder-class="placeholder" data-event-opts="{{[['input',[['__set_model',['$0','aliAccount','$event',[]],['form']]]]]}}" value="{{form.aliAccount}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ¯ä»å®å§å</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥æ¯ä»å®å§å" placeholder-class="placeholder" data-event-opts="{{[['input',[['__set_model',['$0','aliName','$event',[]],['form']]]]]}}" value="{{form.aliName}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="upload-section subject-upload-section data-v-43aee78c"><view class="upload-title-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">èº«ä»½è¯æ£åé¢</text><text class="required data-v-43aee78c">*</text></view></view><view class="upload-grid double-upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseIdCardFront',['$event']]]]]}}" class="upload-box id-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.idcardImg}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m0}}" mode="aspectFill"></image></block><block wx:if="{{!form.idcardImg}}"><text class="upload-text data-v-43aee78c">ä¸ä¼ 人åé¢</text></block></view><view data-event-opts="{{[['tap',[['chooseIdCardBack',['$event']]]]]}}" class="upload-box id-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.idcardImgBack}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m1}}" mode="aspectFill"></image></block><block wx:if="{{!form.idcardImgBack}}"><text class="upload-text data-v-43aee78c">ä¸ä¼ å½å¾½é¢</text></block></view></view></view><view class="upload-section subject-upload-section data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">ææå³å¨åå</text><text class="required data-v-43aee78c">*</text></view><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseLaborContractImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedLaborContractImages}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deleteLaborContractImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view><view class="upload-section last-upload data-v-43aee78c"><view class="upload-title-row between-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">社ä¿ç¼´çº³è¯æ</text><text class="required data-v-43aee78c">*</text></view><text class="upload-tip data-v-43aee78c">æå¤ä¸ä¼ 3å¼ ç
§ç</text></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseSocialSecurityImage',['$event']]]]]}}" class="upload-box data-v-43aee78c" bindtap="__e"><image class="upload-icon data-v-43aee78c" src="/static/image/btn_upload@2x.png" mode="widthFix"></image></view><block wx:for="{{uploadedSocialSecurityImages}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['deleteSocialSecurityImage',[index]]]]]}}" class="image-box data-v-43aee78c" bindtap="__e"><image class="preview-image data-v-43aee78c" src="{{item.url}}" mode="aspectFill"></image><text class="image-mark data-v-43aee78c">å æ</text></view></block></view></view></block><block wx:else><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ³äººå§å</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥æ³äººå§å" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','legalPersonName','$event',[]],['form']]]]]}}" value="{{form.legalPersonName}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">ä¼ä¸æ¯ä»å®è´¦å·</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥ä¼ä¸æ¯ä»å®è´¦å·" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','aliAccount','$event',[]],['form']]]]]}}" value="{{form.aliAccount}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ¯ä»å®å§å</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥æ¯ä»å®å§å" placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','aliName','$event',[]],['form']]]]]}}" value="{{form.aliName}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="form-group compact-group data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ³äººèº«ä»½è¯å·</text><text class="required data-v-43aee78c">*</text></view><input class="text-input data-v-43aee78c" placeholder="请è¾å
¥æ³äººèº«ä»½è¯å·ç " placeholder-style="color: #c1c7d0;" data-event-opts="{{[['input',[['__set_model',['$0','legalPersonCard','$event',[]],['form']]]]]}}" value="{{form.legalPersonCard}}" bindinput="__e"/></view><view class="divider data-v-43aee78c"></view><view class="upload-section subject-upload-section data-v-43aee78c"><view class="upload-title-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">æ³äººèº«ä»½è¯æ£åé¢</text><text class="required data-v-43aee78c">*</text></view></view><view class="upload-grid double-upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseLegalPersonCardFront',['$event']]]]]}}" class="upload-box id-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.legalPersonCard}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m2}}" mode="aspectFill"></image></block><block wx:if="{{!form.legalPersonCard}}"><text class="upload-text data-v-43aee78c">ä¸ä¼ 人åé¢</text></block></view><view data-event-opts="{{[['tap',[['chooseLegalPersonCardBack',['$event']]]]]}}" class="upload-box id-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.legalPersonCardBack}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m3}}" mode="aspectFill"></image></block><block wx:if="{{!form.legalPersonCardBack}}"><text class="upload-text data-v-43aee78c">ä¸ä¼ å½å¾½é¢</text></block></view></view></view><view class="upload-section last-upload data-v-43aee78c"><view class="upload-title-row data-v-43aee78c"><view class="label-row data-v-43aee78c"><text class="label data-v-43aee78c">è¥ä¸æ§ç
§</text><text class="required data-v-43aee78c">*</text></view></view><view class="upload-grid data-v-43aee78c"><view data-event-opts="{{[['tap',[['chooseBusinessImage',['$event']]]]]}}" class="upload-box license-upload-box data-v-43aee78c" bindtap="__e"><block wx:if="{{!form.businessImg}}"><image class="camera-icon data-v-43aee78c" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image></block><block wx:else><image class="preview-image data-v-43aee78c" src="{{$root.m4}}" mode="aspectFill"></image></block><block wx:if="{{!form.businessImg}}"><text class="upload-text data-v-43aee78c">ç¹å»ä¸ä¼ </text></block></view></view></view></block></view></block><view class="bottom-btn-wrap data-v-43aee78c"><block wx:if="{{currentStep===1}}"><view data-event-opts="{{[['tap',[['goToStep2',['$event']]]]]}}" class="next-btn data-v-43aee78c" bindtap="__e">ä¸ä¸æ¥</view></block><block wx:else><view data-event-opts="{{[['tap',[['e4',['$event']]]]]}}" class="footer-btn footer-plain-btn data-v-43aee78c" bindtap="__e">ä¸ä¸æ¥</view><view data-event-opts="{{[['tap',[['submitApply',['$event']]]]]}}" class="footer-btn footer-primary-btn data-v-43aee78c" bindtap="__e">æäº¤å
¥é©»ç³è¯·</view></block></view></view> |
| | |
| | | "miniprogram": { |
| | | "list": [ |
| | | { |
| | | "name": "é¨åºå
¥é©»-å®¡æ ¸è¯¦æ
", |
| | | "pathName": "pages/details-entry/details-entry", |
| | | "name": "个人信æ¯", |
| | | "pathName": "pages/settings/settings", |
| | | "query": "", |
| | | "scene": null, |
| | | "launchMode": "default" |
| | | }, |
| | | { |
| | | "name": "å°åå表", |
| | | "pathName": "pages/address/address", |
| | | "query": "", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "é¨åºå
¥é©»-å®¡æ ¸è¯¦æ
", |
| | | "pathName": "pages/details-entry/details-entry", |
| | | "query": "", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "æ¯ä»æå", |
| | | "pathName": "pages/payment-success/payment-success", |
| | | "query": "orderId=15", |
| | |
| | | let getOrderDetail = (orderId) => vm.$u.http.get(`web/order/detail/${orderId}`); // è·å订å详æ
|
| | | let applyShop = (data = {}) => vm.$u.http.post('web/shopInfo/apply', data); // é¨åºå
¥é©»ç³è¯· |
| | | let getMyShop = (params = {}) => vm.$u.http.get('web/shopInfo/myShop',{ params }); // è·åæçåºéºä¿¡æ¯ |
| | | let payDeposit = (data = {}) => vm.$u.http.post('web/shopInfo/payDeposit', data); // é¨åºå
¥é©»æ¯ä» |
| | | |
| | | vm.$u.api = { |
| | | wxLogin, |
| | |
| | | treeList, |
| | | getOrderDetail, |
| | | applyShop, |
| | | getMyShop |
| | | getMyShop, |
| | | payDeposit |
| | | }; |
| | | } |
| | | |