Browse Source

添加银行卡

panhui 4 years ago
parent
commit
28be8e5cef

+ 1 - 1
src/main/java/com/izouma/nineth/service/AdapayService.java

@@ -79,7 +79,7 @@ public class AdapayService {
         return JSON.parseObject(json, Balance.class);
         return JSON.parseObject(json, Balance.class);
     }
     }
 
 
-    public void checkSuccess(Map<String, Object> map) {
+    public static void checkSuccess(Map<String, Object> map) {
         if (!"succeeded".equals(MapUtils.getString(map, "status"))) {
         if (!"succeeded".equals(MapUtils.getString(map, "status"))) {
             String errMsg = MapUtils.getString(map, "error_msg");
             String errMsg = MapUtils.getString(map, "error_msg");
             String errCode = MapUtils.getString(map, "error_code");
             String errCode = MapUtils.getString(map, "error_code");

+ 12 - 2
src/main/java/com/izouma/nineth/service/OrderService.java

@@ -31,6 +31,7 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.EncoderException;
 import org.apache.commons.codec.EncoderException;
 import org.apache.commons.codec.net.URLCodec;
 import org.apache.commons.codec.net.URLCodec;
+import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.event.EventListener;
 import org.springframework.context.event.EventListener;
 import org.springframework.core.env.Environment;
 import org.springframework.core.env.Environment;
@@ -245,6 +246,11 @@ public class OrderService {
     }
     }
 
 
     public Object payAdapay(Long id, String payChannel, String openId) throws BaseAdaPayException {
     public Object payAdapay(Long id, String payChannel, String openId) throws BaseAdaPayException {
+        List<String> aliChannels = Arrays.asList("alipay", "alipay_qr", "alipay_wap");
+        List<String> wxChannels = Arrays.asList("wx_pub", "wx_lite");
+        if (!aliChannels.contains(payChannel) && !wxChannels.contains(payChannel)) {
+            throw new BusinessException("不支持此渠道");
+        }
         Order order = orderRepo.findByIdAndDelFalse(id).orElseThrow(new BusinessException("订单不存在"));
         Order order = orderRepo.findByIdAndDelFalse(id).orElseThrow(new BusinessException("订单不存在"));
         Collection collection = collectionRepo.findById(order.getCollectionId())
         Collection collection = collectionRepo.findById(order.getCollectionId())
                 .orElseThrow(new BusinessException("藏品不存在"));
                 .orElseThrow(new BusinessException("藏品不存在"));
@@ -288,7 +294,7 @@ public class OrderService {
             throw new BusinessException("分账出错");
             throw new BusinessException("分账出错");
         }
         }
 
 
-        if ("wx_pub".equals(payChannel) || "wx_lite".equals(payChannel)) {
+        if (wxChannels.contains(payChannel)) {
             if (StringUtils.isBlank(openId)) {
             if (StringUtils.isBlank(openId)) {
                 throw new BusinessException("缺少openId");
                 throw new BusinessException("缺少openId");
             }
             }
@@ -302,11 +308,15 @@ public class OrderService {
         }
         }
 
 
         Map<String, Object> response = Payment.create(paymentParams);
         Map<String, Object> response = Payment.create(paymentParams);
+        AdapayService.checkSuccess(response);
+        if (aliChannels.contains(payChannel)) {
+            return MapUtils.getMap(response, "expend");
+        }
         return response;
         return response;
     }
     }
 
 
     public static BigDecimal divMoney(BigDecimal totalAmount, BigDecimal restAmount, List<Map<String, Object>> divMembers,
     public static BigDecimal divMoney(BigDecimal totalAmount, BigDecimal restAmount, List<Map<String, Object>> divMembers,
-                                String memberId, int ratio, boolean feeFlag) {
+                                      String memberId, int ratio, boolean feeFlag) {
         if (ratio == -1 || (ratio > 0 && ratio < 100)) {
         if (ratio == -1 || (ratio > 0 && ratio < 100)) {
             BigDecimal divAmount = ratio == -1 ? restAmount :
             BigDecimal divAmount = ratio == -1 ? restAmount :
                     totalAmount.multiply(BigDecimal.valueOf(ratio))
                     totalAmount.multiply(BigDecimal.valueOf(ratio))

+ 31 - 3
src/main/java/com/izouma/nineth/service/UserService.java

@@ -8,20 +8,20 @@ import com.izouma.nineth.config.Constants;
 import com.izouma.nineth.domain.Follow;
 import com.izouma.nineth.domain.Follow;
 import com.izouma.nineth.domain.IdentityAuth;
 import com.izouma.nineth.domain.IdentityAuth;
 import com.izouma.nineth.domain.User;
 import com.izouma.nineth.domain.User;
-import com.izouma.nineth.dto.PageQuery;
-import com.izouma.nineth.dto.UserDTO;
-import com.izouma.nineth.dto.UserRegister;
+import com.izouma.nineth.dto.*;
 import com.izouma.nineth.enums.AuthStatus;
 import com.izouma.nineth.enums.AuthStatus;
 import com.izouma.nineth.enums.AuthorityName;
 import com.izouma.nineth.enums.AuthorityName;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.FollowRepo;
 import com.izouma.nineth.repo.FollowRepo;
 import com.izouma.nineth.repo.IdentityAuthRepo;
 import com.izouma.nineth.repo.IdentityAuthRepo;
+import com.izouma.nineth.repo.UserBankCardRepo;
 import com.izouma.nineth.repo.UserRepo;
 import com.izouma.nineth.repo.UserRepo;
 import com.izouma.nineth.security.Authority;
 import com.izouma.nineth.security.Authority;
 import com.izouma.nineth.security.JwtTokenUtil;
 import com.izouma.nineth.security.JwtTokenUtil;
 import com.izouma.nineth.security.JwtUserFactory;
 import com.izouma.nineth.security.JwtUserFactory;
 import com.izouma.nineth.service.sms.SmsService;
 import com.izouma.nineth.service.sms.SmsService;
 import com.izouma.nineth.service.storage.StorageService;
 import com.izouma.nineth.service.storage.StorageService;
+import com.izouma.nineth.utils.BankUtils;
 import com.izouma.nineth.utils.JpaUtils;
 import com.izouma.nineth.utils.JpaUtils;
 import com.izouma.nineth.utils.ObjUtils;
 import com.izouma.nineth.utils.ObjUtils;
 import com.izouma.nineth.utils.SecurityUtils;
 import com.izouma.nineth.utils.SecurityUtils;
@@ -63,6 +63,7 @@ public class UserService {
     private SysConfigService  sysConfigService;
     private SysConfigService  sysConfigService;
     private CollectionService collectionService;
     private CollectionService collectionService;
     private AdapayService     adapayService;
     private AdapayService     adapayService;
+    private UserBankCardRepo  userBankCardRepo;
 
 
     @CacheEvict(value = "user", key = "#user.username")
     @CacheEvict(value = "user", key = "#user.username")
     public User update(User user) {
     public User update(User user) {
@@ -412,6 +413,13 @@ public class UserService {
         if (identityAuth.isOrg()) {
         if (identityAuth.isOrg()) {
             //throw new BusinessException("企业认证用户请绑定对公账户");
             //throw new BusinessException("企业认证用户请绑定对公账户");
         }
         }
+        if (!StringUtils.isBlank(user.getSettleAccountId())) {
+            throw new BusinessException("此账号已绑定");
+        }
+        BankValidate bankValidate = BankUtils.validate(bankNo);
+        if (!bankValidate.isValidated()) {
+            throw new BusinessException("暂不支持此卡");
+        }
         if (StringUtils.isEmpty(user.getMemberId())) {
         if (StringUtils.isEmpty(user.getMemberId())) {
             user.setMemberId(adapayService.createMember(userId, user.getPhone(), identityAuth.getRealName(),
             user.setMemberId(adapayService.createMember(userId, user.getPhone(), identityAuth.getRealName(),
                     identityAuth.getIdNo()));
                     identityAuth.getIdNo()));
@@ -422,5 +430,25 @@ public class UserService {
                 identityAuth.getIdNo(), phone, bankNo);
                 identityAuth.getIdNo(), phone, bankNo);
         user.setSettleAccountId(accountId);
         user.setSettleAccountId(accountId);
         userRepo.save(user);
         userRepo.save(user);
+
+        userBankCardRepo.save(UserBankCard.builder()
+                .bank(bankValidate.getBank())
+                .bankName(bankValidate.getBankName())
+                .bankNo(bankNo)
+                .cardType(bankValidate.getCardType())
+                .cardTypeDesc(bankValidate.getCardTypeDesc())
+                .userId(userId)
+                .build());
+    }
+
+    public void removeBankCard(Long userId) throws BaseAdaPayException {
+        User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+        if (StringUtils.isNotBlank(user.getSettleAccountId()) && StringUtils.isNotBlank(user.getMemberId())) {
+            adapayService.delSettleAccount(user.getMemberId(), user.getSettleAccountId());
+            user.setSettleAccountId(null);
+            userRepo.save(user);
+        } else {
+            throw new BusinessException("未绑定");
+        }
     }
     }
 }
 }

+ 15 - 3
src/main/java/com/izouma/nineth/web/OrderPayController.java

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
 import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
 import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.exception.WxPayException;
+import com.huifu.adapay.core.exception.BaseAdaPayException;
+import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.service.AssetService;
 import com.izouma.nineth.service.AssetService;
 import com.izouma.nineth.service.GiftOrderService;
 import com.izouma.nineth.service.GiftOrderService;
 import com.izouma.nineth.service.OrderService;
 import com.izouma.nineth.service.OrderService;
@@ -18,6 +20,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import java.util.Arrays;
 import java.util.regex.Pattern;
 import java.util.regex.Pattern;
 
 
 @Controller
 @Controller
@@ -82,6 +85,12 @@ public class OrderPayController {
         return "PayOrderPC";
         return "PayOrderPC";
     }
     }
 
 
+    @RequestMapping(value = "/gift/weixin")
+    @ResponseBody
+    public Object payGiftOrderWeixin(@RequestParam Long id, @RequestParam String openId) throws WxPayException, EncoderException {
+        return giftOrderService.payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, openId);
+    }
+
     public void detectUA(String ua, Model model) {
     public void detectUA(String ua, Model model) {
         boolean weixin = Pattern.matches(".*(micromessenger).*", ua.toLowerCase());
         boolean weixin = Pattern.matches(".*(micromessenger).*", ua.toLowerCase());
         boolean ios = Pattern.matches(".*(ipad|iphone).*", ua.toLowerCase());
         boolean ios = Pattern.matches(".*(ipad|iphone).*", ua.toLowerCase());
@@ -91,9 +100,12 @@ public class OrderPayController {
         model.addAttribute("android", android);
         model.addAttribute("android", android);
     }
     }
 
 
-    @RequestMapping(value = "/gift/weixin")
+    @RequestMapping(value = "/adapay/alipay", method = RequestMethod.GET)
     @ResponseBody
     @ResponseBody
-    public Object payGiftOrderWeixin(@RequestParam Long id, @RequestParam String openId) throws WxPayException, EncoderException {
-        return giftOrderService.payOrderWeixin(id, WxPayConstants.TradeType.JSAPI, openId);
+    public Object payOrderAdapayAlipay(Long id, String channel) throws BaseAdaPayException {
+        if (!Arrays.asList("alipay", "alipay_qr", "alipay_wap").contains(channel)) {
+            throw new BusinessException("不支持此渠道");
+        }
+        return orderService.payAdapay(id, channel, null);
     }
     }
 }
 }

+ 5 - 0
src/main/java/com/izouma/nineth/web/UserController.java

@@ -220,6 +220,11 @@ public class UserController extends BaseController {
     public void addBankCard(@RequestParam String bankNo, @RequestParam String phone, @RequestParam String code) throws BaseAdaPayException {
     public void addBankCard(@RequestParam String bankNo, @RequestParam String phone, @RequestParam String code) throws BaseAdaPayException {
         userService.addBankCard(SecurityUtils.getAuthenticatedUser().getId(), bankNo, phone, code);
         userService.addBankCard(SecurityUtils.getAuthenticatedUser().getId(), bankNo, phone, code);
     }
     }
+
+    @PostMapping("/removeBankCard")
+    public void removeBankCard() throws BaseAdaPayException {
+        userService.removeBankCard(SecurityUtils.getAuthenticatedUser().getId());
+    }
 }
 }
 
 
 
 

+ 2 - 0
src/main/nine-space/.env.app

@@ -0,0 +1,2 @@
+VUE_APP_BASE_URL=https://nft.9space.vip
+NODE_ENV=app

+ 1 - 1
src/main/nine-space/src/components/product/productLarge.vue

@@ -32,7 +32,7 @@
                     <img src="../../assets/icon_jiage.png" alt="" />
                     <img src="../../assets/icon_jiage.png" alt="" />
                     <span> {{ info.price }}</span>
                     <span> {{ info.price }}</span>
                 </div>
                 </div>
-                <diV v-else class="status">仅展示</diV>
+                <div v-else class="status">仅展示</div>
             </div>
             </div>
         </div>
         </div>
 
 

+ 1 - 16
src/main/nine-space/src/plugins/http.js

@@ -1,22 +1,7 @@
 import axios from 'axios';
 import axios from 'axios';
 import qs from 'qs';
 import qs from 'qs';
 /* eslint-disable */
 /* eslint-disable */
-// let baseUrl = process.env.VUE_APP_BASE_URL;
-let baseUrl = 'http://localhost:8080';
-switch (process.env.NODE_ENV) {
-    case 'development':
-        // baseUrl = 'https://nfttest.9space.vip/';
-        // baseUrl = 'http://192.168.50.190:8080';
-        baseUrl = 'http://localhost:8080';
-        // baseUrl = 'http://192.168.50.190:8080';
-        break;
-    case 'test':
-        baseUrl = 'http://localhost:8080';
-        break;
-    case 'production':
-        baseUrl = '../../';
-        break;
-}
+let baseUrl = process.env.VUE_APP_BASE_URL;
 const axiosInstance = axios.create({
 const axiosInstance = axios.create({
     baseURL: baseUrl
     baseURL: baseUrl
 });
 });

+ 3 - 3
src/main/nine-space/src/router/index.js

@@ -1,4 +1,4 @@
-import { createRouter, createWebHistory } from 'vue-router';
+import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router';
 import store from '../store';
 import store from '../store';
 import { Page } from './Page';
 import { Page } from './Page';
 import { Dialog } from 'vant';
 import { Dialog } from 'vant';
@@ -42,7 +42,7 @@ function jsapiSign() {
                         });
                         });
                     });
                     });
                 })
                 })
-                .catch(e => { });
+                .catch(e => {});
         }
         }
     }, 200);
     }, 200);
 }
 }
@@ -426,7 +426,7 @@ const routes = [
 ];
 ];
 
 
 const router = createRouter({
 const router = createRouter({
-    history: createWebHistory(process.env.BASE_URL),
+    history: process.env.NODE_ENV === 'app' ? createWebHashHistory() : createWebHistory(process.env.BASE_URL),
     routes,
     routes,
     scrollBehavior(to, from, savedPosition) {
     scrollBehavior(to, from, savedPosition) {
         return { x: 0, y: 0 };
         return { x: 0, y: 0 };

+ 2 - 1
src/main/nine-space/vue.config.js

@@ -1,6 +1,7 @@
 const path = require('path');
 const path = require('path');
+console.log(process.env.NODE_ENV);
 module.exports = {
 module.exports = {
-    publicPath: process.env.NODE_ENV === 'production' ? '/9th/' : '/',
+    publicPath: process.env.NODE_ENV === 'production' ? '/9th/' : process.env.NODE_ENV === 'app' ? './' : '/',
     devServer: {
     devServer: {
         port: 8081,
         port: 8081,
         disableHostCheck: true
         disableHostCheck: true

BIN
src/main/pc-space/src/assets/user/icon_yinhangka@3x.png


+ 2 - 2
src/main/pc-space/src/plugins/http.js

@@ -4,9 +4,9 @@ import qs from 'qs';
 let baseUrl = 'http://localhost:8080';
 let baseUrl = 'http://localhost:8080';
 switch (process.env.NODE_ENV) {
 switch (process.env.NODE_ENV) {
     case 'development':
     case 'development':
-        baseUrl = 'https://nfttest.9space.vip/';
+        // baseUrl = 'https://nfttest.9space.vip/';
         // baseUrl = 'http://192.168.50.190:8080';
         // baseUrl = 'http://192.168.50.190:8080';
-        // baseUrl = 'http://localhost:8080';
+        baseUrl = 'http://localhost:8080';
         // baseUrl = 'http://192.168.50.190:8080';
         // baseUrl = 'http://192.168.50.190:8080';
         break;
         break;
     case 'test':
     case 'test':

+ 57 - 13
src/main/pc-space/src/views/user/AccountData.vue

@@ -45,6 +45,9 @@
         </div>
         </div>
         <div class="userContent" v-if="active === '关注' || active === '粉丝'">
         <div class="userContent" v-if="active === '关注' || active === '粉丝'">
             <div class="borderUser"></div>
             <div class="borderUser"></div>
+            <!-- <el-divider content-position="right">
+                <img src="../../assets/copy_icon.png" alt="" />
+            </el-divider> -->
             <el-empty v-if="empty" description="还没有用户哦~"></el-empty>
             <el-empty v-if="empty" description="还没有用户哦~"></el-empty>
             <div v-for="item in list" :key="item.id">
             <div v-for="item in list" :key="item.id">
                 <div class="boxFollow">
                 <div class="boxFollow">
@@ -60,7 +63,7 @@
                                 <div class="box3">
                                 <div class="box3">
                                     <div class="box4">
                                     <div class="box4">
                                         <div class="text4">
                                         <div class="text4">
-                                            粉丝 <span>{{ item.follows }}</span>
+                                            粉丝 <span>{{ item.followers }}</span>
                                         </div>
                                         </div>
                                         <div class="text4">
                                         <div class="text4">
                                             已售 <span>{{ item.sales }}</span>
                                             已售 <span>{{ item.sales }}</span>
@@ -75,8 +78,7 @@
                                             size="mini"
                                             size="mini"
                                             @click.prevent="like(item)"
                                             @click.prevent="like(item)"
                                         >
                                         >
-                                            {{ item.follow ? '已关注' : '关注' }}
-                                            <!-- {{ item.follow ? (isFollow ? '互相关注' : '已关注') : '关注' }} -->
+                                            {{ item.follow ? (isFollow ? '互相关注' : '已关注') : '关注' }}
                                         </el-button>
                                         </el-button>
                                     </div>
                                     </div>
                                 </div>
                                 </div>
@@ -175,16 +177,16 @@
                 </div>
                 </div>
                 <div class="text4" @click="Auths">{{ Status }}</div>
                 <div class="text4" @click="Auths">{{ Status }}</div>
             </div>
             </div>
-            <!-- <div class="box">
+            <div class="box">
                 <div class="text">
                 <div class="text">
                     <div class="text1">
                     <div class="text1">
-                        <img class="icon" src="../../assets/user/icon-renzheng@3x.png" alt="" />
+                        <img class="icon" src="../../assets/user/icon_yinhangka@3x.png" alt="" />
                     </div>
                     </div>
                     <div class="text2">银行卡</div>
                     <div class="text2">银行卡</div>
                     <div class="text3">已添加银行卡信息</div>
                     <div class="text3">已添加银行卡信息</div>
                 </div>
                 </div>
                 <div class="text4" @click="ipcFn">查看</div>
                 <div class="text4" @click="ipcFn">查看</div>
-            </div> -->
+            </div>
         </div>
         </div>
     </div>
     </div>
 </template>
 </template>
@@ -204,6 +206,7 @@ export default {
         return {
         return {
             tabs: ['粉丝', '关注'],
             tabs: ['粉丝', '关注'],
             active: '',
             active: '',
+            isFollow: false,
             list: '',
             list: '',
             empty: false,
             empty: false,
             value: '',
             value: '',
@@ -236,10 +239,51 @@ export default {
         setTimeout(() => {
         setTimeout(() => {
             this.add();
             this.add();
         }, 1000);
         }, 1000);
+        this.$http
+            .get('user/myBankCard', {
+                userId: this.userInfo.id
+            })
+            .then(res => {
+                console.log(res);
+            });
     },
     },
     methods: {
     methods: {
         ipcFn() {
         ipcFn() {
-            this.$router.push('/Addipc');
+            if (this.userInfo.authStatus === 'SUCCESS') {
+                this.$router.push('/Addipc');
+            } else if (this.userInfo.authStatus === 'PENDING' || this.userInfo.authStatus === 'FAIL') {
+                this.$confirm('用户认证中,是否查看认证状态', '实名认证', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    customClass: 'myClass',
+                    center: true
+                }).then(() => {
+                    this.add();
+                    this.$nextTick(() => {
+                        setTimeout(() => {
+                            if (this.userInfo.authStatus !== 'NOT_AUTH' && this.lists == false) {
+                                this.add();
+                                this.$router.push('/userauthentication');
+                            }
+                        }, 1000);
+                        setTimeout(() => {
+                            if (this.userInfo.authStatus !== 'NOT_AUTH' && this.lists == true) {
+                                this.add();
+                                this.$router.push('/enterpriseauthentication');
+                            }
+                        }, 1000);
+                    });
+                });
+            } else if (this.userInfo.authStatus === 'NOT_AUTH') {
+                this.$confirm('您的账户还未实名认证,认证后可进行添加银行卡', '实名认证', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    customClass: 'myClass',
+                    center: true
+                }).then(() => {
+                    this.$router.push('/authentication');
+                });
+            }
         },
         },
         add() {
         add() {
             this.$http
             this.$http
@@ -259,11 +303,10 @@ export default {
                 )
                 )
                 .then(res => {
                 .then(res => {
                     this.lists = res.content[0].org;
                     this.lists = res.content[0].org;
-                    console.log(this.lists);
                 });
                 });
         },
         },
         beforeAvatarUpload(file) {
         beforeAvatarUpload(file) {
-            this.updateFile(file, 100).then(img => {
+            this.updateFile(file, 300).then(img => {
                 this.updateUser({ avatar: img }).then(res => {
                 this.updateUser({ avatar: img }).then(res => {
                     // console.log(res);
                     // console.log(res);
                 });
                 });
@@ -277,11 +320,11 @@ export default {
             });
             });
         },
         },
         tab(e) {
         tab(e) {
+            this.isFollow = false;
             this.active = e;
             this.active = e;
             if (e === '关注') {
             if (e === '关注') {
                 this.$http.get('/user/myFollows').then(res => {
                 this.$http.get('/user/myFollows').then(res => {
                     this.list = res;
                     this.list = res;
-                    console.log(res);
                     this.$store.dispatch('getUserInfo');
                     this.$store.dispatch('getUserInfo');
                     if (this.list.length === 0) {
                     if (this.list.length === 0) {
                         this.empty = true;
                         this.empty = true;
@@ -292,6 +335,7 @@ export default {
             } else {
             } else {
                 this.$http.get('/user/myFollowers').then(res => {
                 this.$http.get('/user/myFollowers').then(res => {
                     this.list = res;
                     this.list = res;
+                    this.isFollow = true;
                     this.$store.dispatch('getUserInfo');
                     this.$store.dispatch('getUserInfo');
                     if (this.list.length === 0) {
                     if (this.list.length === 0) {
                         this.empty = true;
                         this.empty = true;
@@ -328,8 +372,6 @@ export default {
                     }, 1000);
                     }, 1000);
                 });
                 });
             }
             }
-            // ROLE_INSTITUTION 企业
-            // ROLE_PERSONAL 个人
         },
         },
         username() {
         username() {
             this.value = this.userInfo.nickname;
             this.value = this.userInfo.nickname;
@@ -429,7 +471,9 @@ export default {
         padding-top: 200px;
         padding-top: 200px;
         margin: 0 auto;
         margin: 0 auto;
     }
     }
-
+    /deep/ .el-divider__text.is-right {
+        right: 307px;
+    }
     /deep/ .el-empty__description {
     /deep/ .el-empty__description {
         color: #ccc;
         color: #ccc;
         margin-top: 10px;
         margin-top: 10px;

+ 45 - 38
src/main/pc-space/src/views/user/Addipc.vue

@@ -15,24 +15,37 @@
                     ref="form"
                     ref="form"
                     :rules="rules"
                     :rules="rules"
                 >
                 >
-                    <el-form-item label="开户行" prop="password">
-                        <el-input
-                            style="width: 300px"
-                            type="password"
-                            v-model="ruleForm.password"
-                            placeholder="请输入新密码,8-16位字母数字组合"
-                            autocomplete="off"
-                        ></el-input>
-                    </el-form-item>
-                    <el-form-item label="卡号" prop="ipc">
+                    <!-- <el-form-item label="开户行" prop="bankNo">
+                        <el-select style="width: 300px" class="select" v-model="ruleForm.bankNo" placeholder="请选择">
+                            <el-option
+                                v-for="item in sortList"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item> -->
+                    <el-form-item label="卡号" prop="bankNo">
                         <el-input
                         <el-input
                             style="width: 300px"
                             style="width: 300px"
                             type="number"
                             type="number"
-                            v-model="ruleForm.ipc"
-                            placeholder="请输入银行预留手机号"
+                            v-model="ruleForm.bankNo"
+                            placeholder="请输入*某某 银行卡号"
                             autocomplete="off"
                             autocomplete="off"
                         ></el-input>
                         ></el-input>
                     </el-form-item>
                     </el-form-item>
+                    <!-- <el-form-item label="所在地区" prop="address">
+                        <el-select style="width: 300px" class="select" v-model="ruleForm.address" placeholder="请选择">
+                            <el-option
+                                v-for="item in sortList"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item> -->
                     <el-form-item
                     <el-form-item
                         prop="phone"
                         prop="phone"
                         label="银行预留手机号"
                         label="银行预留手机号"
@@ -42,12 +55,7 @@
                             trigger: 'blur'
                             trigger: 'blur'
                         }"
                         }"
                     >
                     >
-                        <el-input
-                            style="width: 300px"
-                            :disabled="true"
-                            v-model="ruleForm.phone"
-                            placeholder="请输入手机号"
-                        ></el-input>
+                        <el-input style="width: 300px" v-model="ruleForm.phone" placeholder="请输入手机号"></el-input>
                     </el-form-item>
                     </el-form-item>
                     <el-form-item prop="code" label="验证码">
                     <el-form-item prop="code" label="验证码">
                         <el-form-item prop="code" :rules="{ required: true, message: '请输入', trigger: 'blur' }">
                         <el-form-item prop="code" :rules="{ required: true, message: '请输入', trigger: 'blur' }">
@@ -80,26 +88,9 @@ export default {
     data() {
     data() {
         return {
         return {
             labelPosition: 'right',
             labelPosition: 'right',
-            ruleForm: {
-                password: '',
-                phone: ''
-            },
+            ruleForm: {},
             time: 0,
             time: 0,
-            rules: {
-                checkPass: [
-                    {
-                        validator: (rule, value, callback) => {
-                            if (value !== this.ruleForm.password) {
-                                callback(new Error('两次密码输入不一致'));
-                            } else {
-                                callback();
-                            }
-                        },
-                        trigger: 'blur'
-                    },
-                    { required: true, message: '请再次输入密码', trigger: 'blur' }
-                ]
-            }
+            rules: {}
         };
         };
     },
     },
     computed: {
     computed: {
@@ -119,7 +110,23 @@ export default {
         ipcSend() {
         ipcSend() {
             this.$refs.form.validate(valid => {
             this.$refs.form.validate(valid => {
                 if (valid) {
                 if (valid) {
-                    console.log('银行卡');
+                    this.$http
+                        .post('/user/addBankCard', {
+                            userId: this.userInfo.id,
+                            bankNo: this.ruleForm.bankNo,
+                            phone: this.ruleForm.phone,
+                            code: this.ruleForm.code
+                        })
+                        .then(res => {
+                            // console.log(res);
+                            this.$message.success('添加成功');
+                            setTimeout(() => {
+                                this.$router.go(-1);
+                            }, 1000);
+                        })
+                        .catch(e => {
+                            this.$message.error(e.error);
+                        });
                 }
                 }
             });
             });
         }
         }

+ 2 - 1
src/main/pc-space/src/views/user/EnterpriseAuthentication.vue

@@ -115,6 +115,7 @@ export default {
         return {
         return {
             loading: true,
             loading: true,
             labelPosition: 'right',
             labelPosition: 'right',
+            IDPattern: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/,
             sizeForm: {
             sizeForm: {
                 realName: '',
                 realName: '',
                 orgLicenseExpire: '',
                 orgLicenseExpire: '',
@@ -152,7 +153,7 @@ export default {
                         }
                         }
                     }
                     }
                 ],
                 ],
-                idNo: { required: true, min: 18, max: 18, message: '请输入18位身份证号', trigger: 'blur' },
+                idNo: { pattern: this.IDPattern, message: '请输入您的身份证号', trigger: 'blur' },
                 realName: { required: true, message: '请输入', trigger: 'blur' },
                 realName: { required: true, message: '请输入', trigger: 'blur' },
                 orgName: { required: true, message: '请输入企业名称', trigger: 'blur' },
                 orgName: { required: true, message: '请输入企业名称', trigger: 'blur' },
                 idFront: { required: true, message: '请添加您的法人身份证(正面)', trigger: 'blur' },
                 idFront: { required: true, message: '请添加您的法人身份证(正面)', trigger: 'blur' },

+ 4 - 2
src/main/pc-space/src/views/user/UserAuthentication.vue

@@ -88,6 +88,8 @@ export default {
     data() {
     data() {
         return {
         return {
             labelPosition: 'right',
             labelPosition: 'right',
+            IDPattern: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/,
+            phonePattern: /^[1][3,4,5,7,8,9][0-9]{9}$/,
             sizeForm: {
             sizeForm: {
                 realName: '',
                 realName: '',
                 idNo: '',
                 idNo: '',
@@ -99,9 +101,9 @@ export default {
             },
             },
             typeFl: {},
             typeFl: {},
             registerRule: {
             registerRule: {
-                idNo: { required: true, min: 18, max: 18, message: '请输入您的身份证号', trigger: 'blur' },
+                idNo: { pattern: this.IDPattern, message: '请输入您的身份证号', trigger: 'blur' },
                 realName: { required: true, message: '请输入您的真实姓名', trigger: 'blur' },
                 realName: { required: true, message: '请输入您的真实姓名', trigger: 'blur' },
-                phone: { required: true, message: '请输入您的联系方式', trigger: 'blur' },
+                phone: { pattern: this.phonePattern, message: '请输入您的联系方式', trigger: 'blur' },
                 email: { type: 'email', required: true, message: '请输入您的邮箱', trigger: 'blur' },
                 email: { type: 'email', required: true, message: '请输入您的邮箱', trigger: 'blur' },
                 idFront: { required: true, message: '请添加您的身份证(正面)', trigger: 'blur' },
                 idFront: { required: true, message: '请添加您的身份证(正面)', trigger: 'blur' },
                 idBack: { required: true, message: '请添加您的身份证(反面)', trigger: 'blur' }
                 idBack: { required: true, message: '请添加您的身份证(反面)', trigger: 'blur' }

+ 2 - 2
src/test/java/com/izouma/nineth/service/AdapayServiceTest.java

@@ -34,7 +34,7 @@ public class AdapayServiceTest extends ApplicationTests {
 
 
         paymentParams.put("app_id", "app_f8760acc-f4d8-46f6-8f70-d80e36517075");
         paymentParams.put("app_id", "app_f8760acc-f4d8-46f6-8f70-d80e36517075");
         paymentParams.put("order_no", "jsdk_payment" + System.currentTimeMillis());
         paymentParams.put("order_no", "jsdk_payment" + System.currentTimeMillis());
-        paymentParams.put("pay_channel", "alipay_qr");
+        paymentParams.put("pay_channel", "alipay");
         paymentParams.put("pay_amt", "0.10");
         paymentParams.put("pay_amt", "0.10");
         paymentParams.put("goods_title", "your goods title");
         paymentParams.put("goods_title", "your goods title");
         paymentParams.put("goods_desc", "your goods desc");
         paymentParams.put("goods_desc", "your goods desc");
@@ -63,7 +63,7 @@ public class AdapayServiceTest extends ApplicationTests {
 
 
     @Test
     @Test
     public void delSettleAccount() throws BaseAdaPayException {
     public void delSettleAccount() throws BaseAdaPayException {
-        adapayService.delSettleAccount("99999999999999", "0288070028826880");
+        adapayService.delSettleAccount("1110", "0288514678171392");
     }
     }
 
 
     @Test
     @Test