现场需求修改
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java
index 7781be6..4b3ace3 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java
@@ -24,4 +24,12 @@
@Query("from TCard t where cardtype='citizencard' and t.lastsaved>?1 and t.lastsaved<=?2 ")
List<TCard> findCitizencardByLastsaved(String startdate, String enddate);
+
+ @Query("from TCard t where t.cardtype='citizencard' and t.cardphyid=?1 order by t.cardno")
+ List<TCard> findCitizencardByCardphyid(String cardphyid);
+
+ @Query("from TCard t where t.cardtype='citizencard' and t.cardphyid=?1 and t.id<>?2 order by t.cardno")
+ List<TCard> findCitizencardByCardphyidWithoutOldId(String cardphyid, String oldId);
+
+ TCard getById(String id);
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
index 150f0cd..56e0cae 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
@@ -264,7 +264,7 @@
+ MoneyUtil.YuanToFen(this.availbal)
+ MoneyUtil.YuanToFen(this.balance)
+ MoneyUtil.YuanToFen(this.frozebal);
- System.out.println("accno="+this.accno+",data="+data);
+// System.out.println("accno="+this.accno+",data="+data);
return Signature.generateTac(this.accno, data);
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Signature.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Signature.java
index 184130f..a0173a0 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Signature.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Signature.java
@@ -16,7 +16,7 @@
if (tenant == null) {
throw new IllegalArgumentException("TenantID 未定义");
}
- System.out.println("factor="+factor+",data="+data+",tenant="+tenant);
+// System.out.println("factor="+factor+",data="+data+",tenant="+tenant);
return HMACUtil.sha256HMAC(deliveryKey(tenant, factor), data).substring(0, 24);
}
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
index 628137b..adc71b5 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/StringUtil.java
@@ -221,4 +221,55 @@
}
return false;
}
+
+ public static boolean isNumber(String inputStr) {
+ char[] ch = inputStr.toCharArray();
+ for (int i = 0; i < ch.length; i++) {
+ if ((ch[i] < '0') || (ch[i] > '9')) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean isCardphyid(String str) {
+ if (null != str && str.matches("^[A-F0-9]+$")) {
+ return true;
+ }
+ return false;
+ }
+
+ private static char getBankCardCheckCode(String nonCheckCodeBankCard) {
+ if (nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0 || !nonCheckCodeBankCard.matches("\\d+")) {
+ //如果传的不是数字返回N
+ return 'N';
+ }
+ char[] chs = nonCheckCodeBankCard.trim().toCharArray();
+ int luhmSum = 0;
+ for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {
+ int k = chs[i] - '0';
+ if (j % 2 == 0) {
+ k *= 2;
+ k = k / 10 + k % 10;
+ }
+ luhmSum += k;
+ }
+ return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');
+ }
+
+ /**
+ * 判断是否是银行卡号
+ * */
+ public static boolean isBankcardno(String bankCard) {
+ if (bankCard.length() < 15 || bankCard.length() > 19) {
+ return false;
+ }
+ char bit = getBankCardCheckCode(bankCard.substring(0, bankCard.length() - 1));
+ if (bit == 'N') {
+ return false;
+ }
+ return bankCard.charAt(bankCard.length() - 1) == bit;
+ }
+
+
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/bean/CitizenCardShowBean.java b/payapi/src/main/java/com/supwisdom/dlpay/system/bean/CitizenCardShowBean.java
index b5c095d..5f4961b 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/bean/CitizenCardShowBean.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/bean/CitizenCardShowBean.java
@@ -17,6 +17,7 @@
private String idno;
private String mobile;
private String email;
+ private String sex;
public String getCid() {
return cid;
@@ -145,4 +146,12 @@
public void setEmail(String email) {
this.email = email;
}
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/UserController.java b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/UserController.java
index fe353a1..eb36de9 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/UserController.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/UserController.java
@@ -3,27 +3,22 @@
import com.supwisdom.dlpay.api.bean.JsonResult;
import com.supwisdom.dlpay.api.domain.TAccount;
import com.supwisdom.dlpay.api.domain.TPerson;
-import com.supwisdom.dlpay.api.domain.TPersonIdentity;
import com.supwisdom.dlpay.api.domain.TPointsAccount;
-import com.supwisdom.dlpay.framework.domain.TOperator;
-import com.supwisdom.dlpay.framework.util.Dictionary;
-import com.supwisdom.dlpay.framework.util.PageResult;
-import com.supwisdom.dlpay.framework.util.StringUtil;
-import com.supwisdom.dlpay.framework.util.WebConstant;
+import com.supwisdom.dlpay.framework.util.*;
import com.supwisdom.dlpay.system.bean.CitizenCardSearchBean;
import com.supwisdom.dlpay.system.bean.CitizenCardShowBean;
-import com.supwisdom.dlpay.system.bean.IdTypeBean;
import com.supwisdom.dlpay.system.bean.PersonParamBean;
import com.supwisdom.dlpay.system.service.DictionaryProxy;
import com.supwisdom.dlpay.system.service.UserDataService;
+import com.supwisdom.dlpay.util.WebCheckException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
-import java.util.ArrayList;
-import java.util.List;
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
@Controller
public class UserController {
@@ -177,7 +172,7 @@
@GetMapping("/user/cardlist")
@PreAuthorize("hasPermission('/user/card','')")
@ResponseBody
- public PageResult<CitizenCardShowBean> getBusinessDataList(@RequestParam("page") Integer pageNo,
+ public PageResult<CitizenCardShowBean> getCitizenCardList(@RequestParam("page") Integer pageNo,
@RequestParam("limit") Integer pageSize,
@RequestParam(value = "cardno", required = false) String cardno,
@RequestParam(value = "cardphyid", required = false) String cardphyid,
@@ -194,4 +189,93 @@
return new PageResult<>(99, "系统查询错误");
}
}
+
+ @GetMapping("/user/load4addcard")
+ @PreAuthorize("hasPermission('/user/load4addcard','')")
+ public String addCitizenCard() {
+ return "system/user/addcard";
+ }
+
+ @PostMapping("/user/cardadd")
+ @PreAuthorize("hasPermission('/user/cardadd','')")
+ @ResponseBody
+ public JsonResult addCitizencard(@RequestParam(value = "cardno", required = false) String cardno,
+ @RequestParam(value = "cardphyid", required = false) String cardphyid,
+ @RequestParam(value = "expiredate", required = false) String expiredate,
+ @RequestParam(value = "cardstatus", required = false) String cardstatus,
+ @RequestParam(value = "bankcardno", required = false) String bankcardno,
+ @RequestParam(value = "signstatus", required = false) String signstatus,
+ @RequestParam(value = "username", required = false) String username,
+ @RequestParam(value = "sex", required = false) String sex,
+ @RequestParam(value = "idtype", required = false) String idtype,
+ @RequestParam(value = "idno", required = false) String idno,
+ @RequestParam(value = "mobile", required = false) String mobile,
+ @RequestParam(value = "email", required = false) String email) {
+ try {
+ if (userDataService.doSaveNewCitizenCard(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email)) {
+ return JsonResult.ok("新增成功!");
+ } else {
+ return JsonResult.error("新增失败!");
+ }
+ } catch (WebCheckException wce) {
+ return JsonResult.error(wce.getMessage());
+ } catch (Exception e) {
+ return dealViolationException(e, "新增异常!!");
+ }
+ }
+
+ private JsonResult dealViolationException(Exception e, String defaultErrmsg) {
+ String errmsg = "";
+ if (e instanceof ConstraintViolationException) {
+ ConstraintViolationException cve = (ConstraintViolationException) e;
+ if (null != cve.getConstraintViolations()) {
+ for (ConstraintViolation v : cve.getConstraintViolations()) {
+ errmsg += v.getMessage() + " ";
+ }
+ }
+ }
+ if (!StringUtil.isEmpty(errmsg)) {
+ return JsonResult.error(errmsg);
+ } else {
+ e.printStackTrace();
+ return JsonResult.error(defaultErrmsg);
+ }
+ }
+
+ @GetMapping("/user/load4modifycard")
+ @PreAuthorize("hasPermission('/user/load4modifycard','')")
+ public String load4UpdateCitizenCard() {
+ return "system/user/updatecard";
+ }
+
+ @PostMapping("/user/cardupdate")
+ @PreAuthorize("hasPermission('/user/cardupdate','')")
+ @ResponseBody
+ public JsonResult addCitizencard(@RequestParam(value = "cid") String cid,
+ @RequestParam(value = "bkid") String bkid,
+ @RequestParam(value = "cardno", required = false) String cardno,
+ @RequestParam(value = "cardphyid", required = false) String cardphyid,
+ @RequestParam(value = "expiredate", required = false) String expiredate,
+ @RequestParam(value = "cardstatus", required = false) String cardstatus,
+ @RequestParam(value = "bankcardno", required = false) String bankcardno,
+ @RequestParam(value = "signstatus", required = false) String signstatus,
+ @RequestParam(value = "username", required = false) String username,
+ @RequestParam(value = "sex", required = false) String sex,
+ @RequestParam(value = "idtype", required = false) String idtype,
+ @RequestParam(value = "idno", required = false) String idno,
+ @RequestParam(value = "mobile", required = false) String mobile,
+ @RequestParam(value = "email", required = false) String email) {
+ try {
+ if (userDataService.doUpdateCitizenCard(cid, bkid, cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email)) {
+ return JsonResult.ok("修改成功!");
+ } else {
+ return JsonResult.error("修改失败!");
+ }
+ } catch (WebCheckException wce) {
+ return JsonResult.error(wce.getMessage());
+ } catch (Exception e) {
+ return dealViolationException(e, "修改异常!!!");
+ }
+ }
+
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
index 3140f79..8cc7a5b 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
@@ -1,14 +1,12 @@
package com.supwisdom.dlpay.system.service;
import com.supwisdom.dlpay.api.bean.JsonResult;
-import com.supwisdom.dlpay.api.domain.TAccount;
-import com.supwisdom.dlpay.api.domain.TPerson;
-import com.supwisdom.dlpay.api.domain.TPersonIdentity;
-import com.supwisdom.dlpay.api.domain.TPointsAccount;
+import com.supwisdom.dlpay.api.domain.*;
import com.supwisdom.dlpay.framework.util.PageResult;
import com.supwisdom.dlpay.system.bean.CitizenCardSearchBean;
import com.supwisdom.dlpay.system.bean.CitizenCardShowBean;
import com.supwisdom.dlpay.system.bean.PersonParamBean;
+import com.supwisdom.dlpay.util.WebCheckException;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -48,4 +46,16 @@
* */
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
PageResult<CitizenCardShowBean> getUserCitizenCardPage(CitizenCardSearchBean param, int pageNo, int pageSize);
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+ boolean doSaveNewCitizenCard(String cardno, String cardphyid, String expiredate, String cardstatus, String bankcardno,
+ String signstatus, String username, String sex, String idtype, String idno, String mobile,
+ String email) throws Exception;
+
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+ boolean doUpdateCitizenCard(String cid, String bkid, String cardno, String cardphyid, String expiredate, String cardstatus,
+ String bankcardno, String signstatus, String username, String sex, String idtype, String idno,
+ String mobile, String email) throws Exception;
+
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
index a42e636..01105f8 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
@@ -1,14 +1,10 @@
package com.supwisdom.dlpay.system.service.impl;
import com.supwisdom.dlpay.api.bean.JsonResult;
-import com.supwisdom.dlpay.api.dao.AccountDao;
-import com.supwisdom.dlpay.api.dao.PersonDao;
-import com.supwisdom.dlpay.api.dao.PersonIdentityDao;
-import com.supwisdom.dlpay.api.dao.PointsAccountDao;
-import com.supwisdom.dlpay.api.domain.TAccount;
-import com.supwisdom.dlpay.api.domain.TPerson;
-import com.supwisdom.dlpay.api.domain.TPersonIdentity;
-import com.supwisdom.dlpay.api.domain.TPointsAccount;
+import com.supwisdom.dlpay.api.dao.*;
+import com.supwisdom.dlpay.api.domain.*;
+import com.supwisdom.dlpay.api.types.IDTypes;
+import com.supwisdom.dlpay.api.types.SexTypes;
import com.supwisdom.dlpay.framework.data.SystemDateTime;
import com.supwisdom.dlpay.framework.service.SystemUtilService;
import com.supwisdom.dlpay.framework.tenant.TenantContext;
@@ -17,6 +13,8 @@
import com.supwisdom.dlpay.system.bean.CitizenCardShowBean;
import com.supwisdom.dlpay.system.bean.PersonParamBean;
import com.supwisdom.dlpay.system.service.UserDataService;
+import com.supwisdom.dlpay.util.ConstantUtil;
+import com.supwisdom.dlpay.util.WebCheckException;
import org.hibernate.query.internal.NativeQueryImpl;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +27,7 @@
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.math.BigInteger;
+import java.util.Arrays;
import java.util.List;
import java.util.Optional;
@@ -44,6 +43,8 @@
private SystemUtilService systemUtilService;
@Autowired
private PersonIdentityDao personIdentityDao;
+ @Autowired
+ private CardDao cardDao;
@PersistenceContext
private EntityManager entityManager;
@@ -195,7 +196,7 @@
@Override
public PageResult<CitizenCardShowBean> getUserCitizenCardPage(CitizenCardSearchBean param, int pageNo, int pageSize) {
- StringBuffer querySql = new StringBuffer("select t.id as cid,t.cardno,t.cardtype,t.cardphyid,case when t.status='closed' then 'closed' else t.trans_status end as status,t.expiredate,a.id as bkid,a.cardno as bankcardno,a.signed,t.lastsaved,t.userid,p.name as username,p.idtype,p.idno,p.mobile,p.email \n" +
+ StringBuffer querySql = new StringBuffer("select t.id as cid,t.cardno,t.cardtype,t.cardphyid,case when t.status='closed' then 'closed' else t.trans_status end as status,t.expiredate,a.id as bkid,a.cardno as bankcardno,a.signed,t.lastsaved,t.userid,p.name as username,p.idtype,p.idno,p.mobile,p.email,p.sex \n" +
"from tb_card t left join tb_card a on a.cardtype='bankcard' and a.cardphyid=t.cardphyid and a.userid=t.userid left join tb_person p on p.userid=t.userid \n" +
"where t.cardtype='citizencard' ");
StringBuffer countSql = new StringBuffer("select count(t.id) as cnt \n" +
@@ -251,4 +252,331 @@
BigInteger cnt = (BigInteger) countQuery.getSingleResult();
return new PageResult<>(cnt.longValue(), list);
}
+
+ private boolean checkCitizenCardData(String cardno, String cardphyid, String expiredate, String cardstatus, String bankcardno,
+ String signstatus, String username, String sex, String idtype, String idno, String mobile,
+ String email) throws WebCheckException {
+ if (StringUtil.isEmpty(cardno)) throw new WebCheckException("市民卡号不能为空");
+ if (!StringUtil.isNumber(cardno.trim())) throw new WebCheckException("请正确填写市民卡号");
+
+ if (StringUtil.isEmpty(cardphyid)) throw new WebCheckException("物理卡号不能为空");
+ if (!StringUtil.isCardphyid(cardphyid.trim()) || cardphyid.trim().length() != 8)
+ throw new WebCheckException("请正确填写八位物理卡号(八位十六进制数,字母大写)");
+
+ if (StringUtil.isEmpty(expiredate)) throw new WebCheckException("请填写卡有效期");
+ if (!DateUtil.checkDatetimeValid(expiredate.trim(), "yyyy-MM-dd")) throw new WebCheckException("请正确填写卡有效期");
+
+ if (StringUtil.isEmpty(cardstatus)) throw new WebCheckException("请选择卡状态");
+ if (!Arrays.asList(TradeDict.STATUS_NORMAL, TradeDict.STATUS_CLOSED, TradeDict.STATUS_ABNORMAL, TradeDict.STATUS_UNUSE).contains(cardstatus.trim()))
+ throw new WebCheckException("请正确选择卡状态");
+
+ if (StringUtil.isEmpty(bankcardno)) throw new WebCheckException("请填写银行卡号");
+ if (!StringUtil.isBankcardno(bankcardno.trim())) throw new WebCheckException("请正确填写银行卡号");
+
+ if (StringUtil.isEmpty(signstatus)) throw new WebCheckException("请选择银行卡签约状态");
+ if (!"0".equals(signstatus.trim()) && !"1".equals(signstatus.trim())) throw new WebCheckException("请选择银行卡签约状态");
+
+ if (StringUtil.isEmpty(username)) throw new WebCheckException("请填写姓名");
+
+ if (StringUtil.isEmpty(sex)) throw new WebCheckException("请选择性别");
+ if (Arrays.asList(SexTypes.ALL).contains(sex.trim())) throw new WebCheckException("请正确选择性别");
+
+ if (StringUtil.isEmpty(idtype)) throw new WebCheckException("请选择证件类别");
+ if (-999 == IDTypes.findByValue(idtype.trim())) throw new WebCheckException("请正确选择证件类别");
+
+ if (StringUtil.isEmpty(idno)) throw new WebCheckException("请填写证件号");
+ if (IDTypes.IDCARD.value().equals(idtype.trim()) && !StringUtil.isIdentity(idno.trim()))
+ throw new WebCheckException("请正确填写身份证号");
+
+ if (!StringUtil.isEmpty(mobile) && !StringUtil.isMobile(mobile.trim())) throw new WebCheckException("请正确填写手机号");
+ if (!StringUtil.isEmpty(email) && !StringUtil.isEmail(email.trim())) throw new WebCheckException("请正确填写电子邮箱");
+ return true;
+ }
+
+ @Override
+ public boolean doSaveNewCitizenCard(String cardno, String cardphyid, String expiredate, String cardstatus, String bankcardno,
+ String signstatus, String username, String sex, String idtype, String idno, String mobile,
+ String email) throws Exception {
+ if (checkCitizenCardData(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email)) {
+ double maxbal = systemUtilService.getSysparaValueAsDouble(SysparaUtil.BALANCE_LIMIT, SysparaUtil.DEFAULT_BALANCE_LIMIT);
+ double lowfreeLimit = systemUtilService.getSysparaValueAsDouble(SysparaUtil.NOPASS_LIMIT, SysparaUtil.DEFAULT_NOPASS_LIMIT);
+ double daylimit = systemUtilService.getSysparaValueAsDouble(SysparaUtil.DAY_PAY_LIMIT, SysparaUtil.DEFAULT_DAY_PAY_LIMIT);
+
+ TCard cityCard = cardDao.findCardByCardnoAndCardtype(cardno.trim(), ConstantUtil.CARDTYPE_CITIZENCARD);
+ if (null != cityCard) throw new WebCheckException("市民卡号已经存在!");
+
+ TCard bankCard = cardDao.findCardByCardnoAndCardtype(bankcardno.trim(), ConstantUtil.CARDTYPE_BANKCARD);
+ if (null != bankCard) throw new WebCheckException("银行卡号已经存在!");
+
+ List<TCard> cardList = cardDao.findCitizencardByCardphyid(cardphyid.trim());
+ if (!StringUtil.isEmpty(cardList)) throw new WebCheckException("物理卡号已经存在!");
+
+ TPerson person = personDao.findByIdentity(idtype.trim(), idno.trim());
+ if (null != person && username.trim().equals(person.getName()))
+ throw new WebCheckException("证件号对应的用户已经存在,且姓名不匹配!");
+
+ SystemDateTime dt = systemUtilService.getSysdatetime();
+ if (null != person) {
+ boolean needUpdate = false;
+ if (!sex.trim().equals(person.getSex())) {
+ person.setSex(sex.trim());
+ needUpdate = true;
+ }
+ if (!StringUtil.isEmpty(mobile) && !mobile.trim().equals(person.getMobile())) {
+ person.setMobile(mobile.trim());
+ needUpdate = true;
+ }
+ if (!StringUtil.isEmpty(email) && !email.trim().equals(person.getEmail())) {
+ person.setEmail(email.trim());
+ needUpdate = true;
+ }
+ if (needUpdate) {
+ person.setLastsaved(dt.getHostdatetime());
+ personDao.save(person);
+ }
+ } else {
+ person = new TPerson();
+ person.setName(username.trim());
+ person.setSex(sex.trim());
+ person.setStatus(TradeDict.STATUS_NORMAL);
+ person.setIdtype(idtype.trim());
+ person.setIdno(idno.trim());
+ person.setEmail(null == email ? null : email.trim());
+ person.setMobile(null == mobile ? null : mobile.trim());
+ person.setLastsaved(dt.getHostdatetime());
+ person.setTenantid(TenantContext.getTenantSchema());
+ person = personDao.save(person);
+
+ TAccount account = new TAccount();
+ account.setAccname(person.getName());
+ account.setSubjno(Subject.SUBJNO_PERSONAL_DEPOSIT);
+ account.setUserid(person.getUserid());
+ account.setTransStatus(person.getStatus());
+ account.setBalance(0D);
+ account.setAvailbal(0D);
+ account.setFrozebal(0D);
+ account.setLowfreeFlag(false);
+ account.setLowfreeLimit(lowfreeLimit);
+ account.setDaylimit(daylimit);
+ account.setMaxbal(maxbal);
+ account.setLasttranstime(dt.getSysdate());
+ account.setLastdayDpsamt(0D);
+ account.setLastdayTransamt(0D);
+ account.setOpendate(dt.getHostdate());
+ account.setTac(Signature.SPY_TAC);
+ account.setTenantid(person.getTenantid());
+ account = accountDao.save(account);
+ account.setTac(account.generateTac());
+ accountDao.save(account);
+ }
+
+ cityCard = new TCard(); //新增市民卡
+ cityCard.setCardno(cardno.trim());
+ cityCard.setCardtype(ConstantUtil.CARDTYPE_CITIZENCARD);
+ cityCard.setCardphyid(cardphyid.trim());
+ cityCard.setStatus(TradeDict.STATUS_NORMAL);
+ cityCard.setTransStatus(cardstatus.trim());
+ if (TradeDict.STATUS_CLOSED.equals(cardstatus.trim())) {
+ cityCard.setStatus(TradeDict.STATUS_CLOSED);
+ cityCard.setTransStatus(TradeDict.STATUS_ABNORMAL);
+ }
+ cityCard.setExpiredate(DateUtil.unParseToDateFormat(expiredate.trim()));
+ cityCard.setSigned(false);
+ cityCard.setUserid(person.getUserid());
+ cityCard.setLastsaved(dt.getHostdatetime());
+ cityCard.setTenantid(person.getTenantid());
+ cardDao.save(cityCard);
+
+ bankCard = new TCard(); //新增银行卡
+ bankCard.setCardno(bankcardno.trim());
+ bankCard.setCardtype(ConstantUtil.CARDTYPE_BANKCARD);
+ bankCard.setCardphyid(cardphyid.trim());
+ bankCard.setStatus(TradeDict.STATUS_NORMAL);
+ bankCard.setTransStatus(TradeDict.STATUS_NORMAL);
+ if (TradeDict.STATUS_CLOSED.equals(cardstatus.trim())) {
+ bankCard.setStatus(TradeDict.STATUS_CLOSED);
+ }
+ bankCard.setExpiredate("21991231");
+ bankCard.setSigned("1".equals(signstatus.trim()));
+ bankCard.setUserid(person.getUserid());
+ bankCard.setLastsaved(dt.getHostdatetime());
+ bankCard.setTenantid(person.getTenantid());
+ if (TradeDict.STATUS_NORMAL.equals(bankCard.getStatus())) {
+ cardDao.closedBankcardStatusByUserid(bankCard.getUserid()); //注销其他银行卡
+ }
+ cardDao.save(bankCard);
+ return true;
+ }
+ return false;
+ }
+
+ private TCard findCardById(String id) {
+ if (!StringUtil.isEmpty(id)) return cardDao.getById(id.trim());
+ return null;
+ }
+
+ @Override
+ public boolean doUpdateCitizenCard(String cid, String bkid, String cardno, String cardphyid, String expiredate, String cardstatus,
+ String bankcardno, String signstatus, String username, String sex, String idtype, String idno,
+ String mobile, String email) throws Exception {
+ TCard cityCard = findCardById(cid);
+ TCard bankCard = findCardById(bkid);
+ if (null == cityCard || null == bankCard ||
+ !ConstantUtil.CARDTYPE_CITIZENCARD.equals(cityCard.getCardtype()) ||
+ !ConstantUtil.CARDTYPE_BANKCARD.equals(bankCard.getCardtype()) ||
+ !cityCard.getUserid().equals(bankCard.getUserid()) ||
+ !cityCard.getCardphyid().equals(bankCard.getCardphyid())) {
+ throw new WebCheckException("请求参数错误,请重新查询!");
+ }
+ TPerson person = personDao.findByUserid(cityCard.getUserid());
+ if(null==person) throw new WebCheckException("请求参数错误,请重新查询!");
+
+ if (checkCitizenCardData(cardno, cardphyid, expiredate, cardstatus, bankcardno, signstatus, username, sex, idtype, idno, mobile, email)) {
+ TPerson owner = null; //市民卡拥有者
+ SystemDateTime dt = systemUtilService.getSysdatetime();
+ if(idtype.trim().equals(person.getIdtype()) && idno.trim().equals(person.getIdno())){
+ //同一用户
+ if(!username.trim().equals(person.getName())) throw new WebCheckException("数据异常!证件号对应的用户已经存在,但姓名不匹配!");
+ owner = person;
+ }else{
+ //改变了所有者
+ TPerson newPerson = personDao.findByIdentity(idtype.trim(), idno.trim());
+ if(null!=newPerson && !username.trim().equals(newPerson.getName())) throw new WebCheckException("数据异常!证件号对应的用户已经存在,但姓名不匹配!");
+ if(null==newPerson){
+ //新增
+ double maxbal = systemUtilService.getSysparaValueAsDouble(SysparaUtil.BALANCE_LIMIT, SysparaUtil.DEFAULT_BALANCE_LIMIT);
+ double lowfreeLimit = systemUtilService.getSysparaValueAsDouble(SysparaUtil.NOPASS_LIMIT, SysparaUtil.DEFAULT_NOPASS_LIMIT);
+ double daylimit = systemUtilService.getSysparaValueAsDouble(SysparaUtil.DAY_PAY_LIMIT, SysparaUtil.DEFAULT_DAY_PAY_LIMIT);
+
+ newPerson = new TPerson();
+ newPerson.setName(username.trim());
+ newPerson.setSex(sex.trim());
+ newPerson.setStatus(TradeDict.STATUS_NORMAL);
+ newPerson.setIdtype(idtype.trim());
+ newPerson.setIdno(idno.trim());
+ newPerson.setEmail(null == email ? null : email.trim());
+ newPerson.setMobile(null == mobile ? null : mobile.trim());
+ newPerson.setLastsaved(dt.getHostdatetime());
+ newPerson.setTenantid(TenantContext.getTenantSchema());
+ newPerson = personDao.save(newPerson);
+
+ TAccount account = new TAccount();
+ account.setAccname(newPerson.getName());
+ account.setSubjno(Subject.SUBJNO_PERSONAL_DEPOSIT);
+ account.setUserid(newPerson.getUserid());
+ account.setTransStatus(newPerson.getStatus());
+ account.setBalance(0D);
+ account.setAvailbal(0D);
+ account.setFrozebal(0D);
+ account.setLowfreeFlag(false);
+ account.setLowfreeLimit(lowfreeLimit);
+ account.setDaylimit(daylimit);
+ account.setMaxbal(maxbal);
+ account.setLasttranstime(dt.getSysdate());
+ account.setLastdayDpsamt(0D);
+ account.setLastdayTransamt(0D);
+ account.setOpendate(dt.getHostdate());
+ account.setTac(Signature.SPY_TAC);
+ account.setTenantid(person.getTenantid());
+ account = accountDao.save(account);
+ account.setTac(account.generateTac());
+ accountDao.save(account);
+ }
+ owner = newPerson;
+ }
+ if(null== owner) throw new WebCheckException("业务处理异常!");
+
+ boolean needUpdate = false;
+ if (!sex.trim().equals(owner.getSex())) {
+ owner.setSex(sex.trim());
+ needUpdate = true;
+ }
+ if (!StringUtil.isEmpty(mobile) && !mobile.trim().equals(owner.getMobile())) {
+ owner.setMobile(mobile.trim());
+ needUpdate = true;
+ }
+ if (!StringUtil.isEmpty(email) && !email.trim().equals(owner.getEmail())) {
+ owner.setEmail(email.trim());
+ needUpdate = true;
+ }
+ if (needUpdate) {
+ owner.setLastsaved(dt.getHostdatetime());
+ personDao.save(owner);
+ }
+
+ boolean cardUpdate = false;
+ if(!cardno.trim().equals(cityCard.getCardno())){
+ //市民卡号变更
+ if (null != cardDao.findCardByCardnoAndCardtype(cardno.trim(), ConstantUtil.CARDTYPE_CITIZENCARD)) throw new WebCheckException("市民卡号已经存在");
+
+ cityCard.setCardno(cardno.trim());
+ cardUpdate = true;
+ }
+ if(!cardphyid.trim().equals(cityCard.getCardphyid())){
+ List<TCard> cardList = cardDao.findCitizencardByCardphyidWithoutOldId(cardphyid.trim(), cityCard.getId());
+ if (!StringUtil.isEmpty(cardList)) throw new WebCheckException("物理卡号已经存在!");
+
+ cityCard.setCardphyid(cardphyid.trim());
+ cardUpdate = true;
+ }
+
+ String newExpiredate = DateUtil.unParseToDateFormat(expiredate);
+ if(!newExpiredate.equals(cityCard.getExpiredate())){
+ cityCard.setExpiredate(newExpiredate);
+ cardUpdate = true;
+ }
+
+ if (TradeDict.STATUS_CLOSED.equals(cardstatus.trim())) {
+ if (!TradeDict.STATUS_CLOSED.equals(cityCard.getStatus())) {
+ cityCard.setStatus(TradeDict.STATUS_CLOSED);
+ cardUpdate = true;
+ }
+ } else if (!cardstatus.trim().equals(cityCard.getTransStatus())) {
+ cityCard.setTransStatus(cardstatus.trim());
+ cardUpdate = true;
+ }
+ if(!cityCard.getUserid().equals(owner.getUserid())){
+ cityCard.setUserid(owner.getUserid());
+ cardUpdate = true;
+ }
+
+ if(cardUpdate){
+ cityCard.setLastsaved(dt.getHostdatetime());
+ cardDao.save(cityCard);
+ }
+
+ boolean bankcardUpdate = false;
+ if(!bankcardno.trim().equals(bankCard.getCardno())){
+ if (null != cardDao.findCardByCardnoAndCardtype(bankcardno.trim(), ConstantUtil.CARDTYPE_BANKCARD)) throw new WebCheckException("银行卡号已经存在");
+ bankCard.setCardno(bankcardno.trim());
+ bankCard.setSigned("1".equals(signstatus));
+ bankcardUpdate = true;
+ }
+ if(!cardphyid.trim().equals(bankCard.getCardphyid())){
+ bankCard.setCardphyid(cityCard.getCardphyid());
+ bankcardUpdate = true;
+ }
+ if(TradeDict.STATUS_CLOSED.equals(cardstatus.trim()) && !TradeDict.STATUS_CLOSED.equals(bankCard.getStatus())){
+ bankCard.setStatus(TradeDict.STATUS_CLOSED);
+ bankcardUpdate = true;
+ }
+ if(!bankCard.getSigned().equals("1".equals(signstatus.trim()))){
+ bankCard.setSigned("1".equals(signstatus.trim()));
+ bankcardUpdate = true;
+ }
+
+ if(!bankCard.getUserid().equals(owner.getUserid())){
+ bankCard.setUserid(cityCard.getUserid());
+ bankcardUpdate = true;
+ }
+
+ if(bankcardUpdate){
+ bankCard.setLastsaved(dt.getHostdatetime());
+ cardDao.save(bankCard);
+ }
+
+ return true;
+ }
+ return false;
+ }
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
index 4981023..210c331 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
@@ -55,6 +55,7 @@
var resp = UserInforResponse()
var cityCard: TCard?
if (!citizencardno.isNullOrEmpty()) {
+ //根据市民卡号查询
cityCard = cardDao.findCardByCardnoAndCardtype(citizencardno, ConstantUtil.CARDTYPE_CITIZENCARD)
if (cityCard == null) {
resp.retcode = 1
@@ -65,6 +66,21 @@
if (bankcard != null) {
resp.bankcardno = bankcard.cardno
}
+ } else if (!bankcardno.isNullOrEmpty()) {
+ //根据银行卡号查询
+ val bankcard = cardDao.findCardByCardnoAndCardtype(bankcardno?.trim(), ConstantUtil.CARDTYPE_BANKCARD)
+ if (bankcard == null) {
+ resp.retcode = 1
+ resp.retmsg = "银行卡不存在"
+ return resp
+ }
+ resp.bankcardno = bankcard.cardno
+ cityCard = cardDao.findBankcardByCitizencard(bankcard.userid, ConstantUtil.CARDTYPE_CITIZENCARD, bankcard.cardphyid)
+ if (cityCard == null) {
+ resp.retcode = 1
+ resp.retmsg = "市民卡不存在"
+ return resp
+ }
} else {
resp.retcode = 1
resp.retmsg = "参数错误"
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/shop_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/shop_service_impl.kt
index fde2ac5..b0dbb6b 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/shop_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/shop_service_impl.kt
@@ -14,6 +14,7 @@
import com.supwisdom.dlpay.framework.domain.TShop
import com.supwisdom.dlpay.framework.domain.TShopacc
import com.supwisdom.dlpay.framework.service.SystemUtilService
+import com.supwisdom.dlpay.framework.tenant.TenantContext
import com.supwisdom.dlpay.framework.util.*
import com.supwisdom.dlpay.util.EnumCheck
import org.springframework.beans.factory.annotation.Autowired
@@ -111,8 +112,8 @@
override fun checkDownloadShopBillParam(param: DownloadShopBillParam): Boolean {
if (!StringUtil.isEmpty(param.checkdate)) {
- val ctl = settleCtlDao.findByTenantId(param.tenantid)
- ?: throw TransactionProcessException(TradeErrorCode.BUSINESS_DEAL_ERROR, "[tenantid=${param.tenantid}]未找到结算状态表")
+ val ctl = settleCtlDao.findByTenantId(TenantContext.getTenantSchema())
+ ?: throw TransactionProcessException(TradeErrorCode.BUSINESS_DEAL_ERROR, "[tenantid=${TenantContext.getTenantSchema()}]未找到结算状态表")
if (DateUtil.compareDatetime(param.checkdate, "${ctl.settledate}", "yyyyMMdd") >= 0) {
throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "对账单未生成") //未结算,不返回对账单
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_reconciliation_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_reconciliation_service_impl.kt
index b368d5a..9937a31 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_reconciliation_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_reconciliation_service_impl.kt
@@ -185,7 +185,7 @@
//需要补账
chkdtl.chkresult = ConstantUtil.CHKDTL_CHKRESULT_NOCHARGE
chkdtl.resolved = ConstantUtil.CHKDTL_RESOLVED_ADD
- chkdtl.remark = "本地未入账,需要补助"
+ chkdtl.remark = "本地未入账,需要补帐"
transactionChkdtlDao.save(chkdtl) //对账明细表更新
}
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
index 38f1499..b997a61 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
@@ -34,7 +34,7 @@
ver += Manifests.read("Payapi-Buildtime") ?: "no"
ver
} catch (ex: Exception) {
- ex.printStackTrace()
+// ex.printStackTrace()
"unknown"
}
}
diff --git a/payapi/src/main/resources/data.sql b/payapi/src/main/resources/data.sql
index cefb007..bcdf83c 100644
--- a/payapi/src/main/resources/data.sql
+++ b/payapi/src/main/resources/data.sql
@@ -303,7 +303,14 @@
VALUES (90, '', 37, '查询', '/user/card', '{tenantid}');
INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
VALUES (91, '', 38, '查询', '/report/shoptodaybusiness', '{tenantid}');
-
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (92, '', 37, '新增跳转', '/user/load4addcard', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (93, '', 37, '新增', '/user/cardadd', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (94, '', 37, '修改跳转', '/user/load4modifycard', '{tenantid}');
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
+VALUES (95, '', 37, '修改', '/user/cardupdate', '{tenantid}');
INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", tenantid)
VALUES ('ff8080816b7947ed016b795577300036', 16, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
@@ -461,6 +468,15 @@
VALUES ('ff8080816db87e27016db9446fda008b', 90, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
VALUES ('4028ee9f6e5d95d8016e5d99e8dd0013', 91, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816ec5cfd5016ec5d16d470006', 92, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816ec5cfd5016ec5d16d470007', 93, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816ecaebf8016ecaeedcec0004', 94, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", "tenantid")
+VALUES ('ff8080816ecafb4e016ecafd58400005', 95, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
+
INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
diff --git a/payapi/src/main/resources/templates/system/user/addcard.html b/payapi/src/main/resources/templates/system/user/addcard.html
new file mode 100644
index 0000000..0151106
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/user/addcard.html
@@ -0,0 +1,175 @@
+<form id="citizencard-add-form" lay-filter="citizencard-add-form" class="layui-form model-form">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>市民卡号</label>
+ <div class="layui-input-inline">
+ <input name="cardno" placeholder="请输入市民卡号" type="text" class="layui-input" maxlength="10"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>物理卡号</label>
+ <div class="layui-input-inline">
+ <input name="cardphyid" placeholder="请输入电子物理卡号" type="text" class="layui-input" maxlength="8"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>卡有效期</label>
+ <div class="layui-input-inline">
+ <input name="expiredate" placeholder="请选择卡有效期" type="text" class="layui-input" maxlength="10"
+ id="citizencard-add-expiredate" autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>卡状态</label>
+ <div class="layui-input-inline">
+ <select name="cardstatus" class="layui-input layui-select" lay-verify="required">
+ <option value="normal" selected>1_正常</option>
+ <option value="closed">9_注销</option>
+ <option value="abnormal">2_异常</option>
+ <option value="unuse">0_未启用</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>银行卡号</label>
+ <div class="layui-input-inline">
+ <input name="bankcardno" placeholder="请填写银行卡号" type="text" class="layui-input" maxlength="19"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>签约状态</label>
+ <div class="layui-input-inline">
+ <select name="signstatus" class="layui-input layui-select" lay-verify="required">
+ <option value="0" selected>未签约</option>
+ <option value="1">已签约</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>姓名</label>
+ <div class="layui-input-inline">
+ <input name="username" placeholder="请填写姓名" type="text" class="layui-input" maxlength="20"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>性别</label>
+ <div class="layui-input-inline">
+ <select name="sex" class="layui-input layui-select" lay-verify="required">
+ <option value="male" selected>男</option>
+ <option value="female">女</option>
+ <option value="unknown">未知</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>证件类型</label>
+ <div class="layui-input-inline">
+ <select name="idtype" class="layui-input layui-select" lay-verify="required">
+ <option value="idcard" selected>0_身份证</option>
+ <option value="residence_booklet">1_户口簿</option>
+ <option value="passport">2_护照</option>
+ <option value="hk_macau_pass">3_港澳居民来往内地通行证</option>
+ <option value="taiwan_pass">4_台湾同胞来往内地通行证</option>
+ <option value="foreigner_residence_permit">5_外国人居留证</option>
+ <option value="military_idcard">6_军官证</option>
+ <option value="soldier_idcard">7_士兵证</option>
+ <option value="unknown">9_其他</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>证件号</label>
+ <div class="layui-input-inline">
+ <input name="idno" placeholder="请输入证件号" type="text" class="layui-input" maxlength="18"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label">手机号</label>
+ <div class="layui-input-inline">
+ <input name="mobile" placeholder="请输入手机号" type="text" class="layui-input" maxlength="11"
+ autocomplete="off"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">邮箱</label>
+ <div class="layui-input-inline">
+ <input name="email" placeholder="请输入邮箱" type="text" class="layui-input" maxlength="60" autocomplete="off"/>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item model-form-footer">
+ <button class="layui-btn" lay-filter="citizencard-add-form-submit" lay-submit id="citizencard-add-ok">保存</button>
+ <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+ </div>
+</form>
+
+<script>
+ layui.use(['layer', 'admin', 'form', 'laydate'], function () {
+ var layer = layui.layer;
+ var admin = layui.admin;
+ var form = layui.form;
+ var laydate = layui.laydate;
+
+ form.render('select');
+ laydate.render({
+ elem: '#citizencard-add-expiredate',
+ trigger: 'click'
+ });
+
+ // 表单提交事件
+ form.on('submit(citizencard-add-form-submit)', function (data) {
+ layer.load(2);
+ var token_name = $("meta[name='_csrf_token']").attr("content");
+ var token = $("meta[name='_csrf_token']").attr("value");
+ data.field[token_name] = token;
+ $.ajax({
+ type : "POST",
+ dataType : "json",
+ url : '[[@{/user/cardadd}]]',
+ data : data.field,
+ success : function(result) {
+ layer.closeAll('loading');
+ if (result.code === 200) {
+ layer.msg(result.msg, {icon: 1});
+ admin.putTempData('t_addCityNo', data.field.cardno);
+ admin.finishPopupCenter();
+ } else if (result.code === 401) {
+ layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+ location.replace('[[@{/login}]]');
+ }, 1000);
+ } else {
+ console.log('err:' + result.code);
+ layer.msg(result.msg, {icon: 2});
+ }
+ },
+ error : function(err) {
+ admin.errorBack(err);
+ }
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/user/card.html b/payapi/src/main/resources/templates/system/user/card.html
index 138d2b9..251daa4 100644
--- a/payapi/src/main/resources/templates/system/user/card.html
+++ b/payapi/src/main/resources/templates/system/user/card.html
@@ -44,6 +44,13 @@
autocomplete="off" class="layui-input"/>
</div>
</div>
+ <div class="layui-inline" style="margin-right: 20px;margin-top: 10px;">
+ <label class="layui-form-label"> </label>
+ <div class="layui-input-block" style="width: 265px;">
+ <button id="citizencard-search-btn" class="layui-btn icon-btn"><i class="layui-icon"></i>搜 索</button>
+ <button id="citizencard-search-btn-reset" class="layui-btn layui-btn-primary">清 空</button>
+ </div>
+ </div>
</div>
</div>
</div>
@@ -54,10 +61,10 @@
<script type="text/html" id="citizencard-table-toolbar">
<div class="layui-btn-container">
- <button class="layui-btn layui-btn-sm" id="btn-citizencard-search-ok" lay-event="search"><i
- class="layui-icon"></i>搜 索</button>
- <button class="layui-btn layui-btn-sm" id="btn-citizencard-search-clear" lay-event="clear"><i
- class="layui-icon"></i>清 空</button>
+ <button class="layui-btn layui-btn-sm" id="btn-citizencard-add" lay-event="add"><i
+ class="layui-icon"></i>新 增</button>
+ <button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-citizencard-modify" lay-event="modify"><i
+ class="layui-icon"></i>修 改</button>
</div>
</script>
@@ -76,6 +83,7 @@
toolbar: '#citizencard-table-toolbar',
cols: [
[
+ {type:'radio', align: 'center', width: 35, fixed: 'left'},
{field:'cardno',title:'市民卡号', align: 'center', width: 120, fixed: 'left', sort: true},
{field:'cardphyid',title:'物理卡号', align: 'center', width: 120, fixed: 'left'},
{
@@ -137,25 +145,64 @@
]
});
+ $("#citizencard-search-btn").click(function(){
+ table.reload('citizencardSearchTable', {
+ where: {
+ cardno: $("#citizencard-search-cardno").val(),
+ cardphyid: $("#citizencard-search-cardphyid").val(),
+ bankcardno: $("#citizencard-search-bankcardno").val(),
+ username: $("#citizencard-search-username").val(),
+ idno: $("#citizencard-search-idno").val()
+ }, page: {curr: 1}
+ });
+ });
+
+ $("#citizencard-search-btn-reset").click(function(){
+ $("#citizencard-search-cardno").val("");
+ $("#citizencard-search-cardphyid").val("");
+ $("#citizencard-search-bankcardno").val("");
+ $("#citizencard-search-username").val("");
+ $("#citizencard-search-idno").val("");
+ });
+
table.on('toolbar(citizencardSearchTable-filter)', function (obj) {
switch (obj.event) {
- case 'search':
- table.reload('citizencardSearchTable', {
- where: {
- cardno: $("#citizencard-search-cardno").val(),
- cardphyid: $("#citizencard-search-cardphyid").val(),
- bankcardno: $("#citizencard-search-bankcardno").val(),
- username: $("#citizencard-search-username").val(),
- idno: $("#citizencard-search-idno").val()
- }, page: {curr: 1}
+ case 'add':
+ admin.popupCenter({
+ title: '添加市民卡',
+ area: '700px',
+ path: '[[@{/user/load4addcard}]]',
+ finish: function () {
+ var tmpNo = admin.getTempData('t_addCityNo');
+ if(undefined !=tmpNo && !isempty(tmpNo)){
+ table.reload('citizencardSearchTable', { where: {cardno: tmpNo}, page: {curr: 1} });
+ }else{
+ table.reload('citizencardSearchTable', {});
+ }
+ }
});
break;
- case 'clear':
- $("#citizencard-search-cardno").val("");
- $("#citizencard-search-cardphyid").val("");
- $("#citizencard-search-bankcardno").val("");
- $("#citizencard-search-username").val("");
- $("#citizencard-search-idno").val("");
+ case 'modify':
+ var checkStatus = table.checkStatus('citizencardSearchTable');
+ if(checkStatus.data.length ==0){
+ layer.msg("请先选中要修改的市民卡", {icon: 2, time: 1500});
+ return;
+ }
+ admin.putTempData('t_citycard', checkStatus.data[0]);
+ admin.popupCenter({
+ title: '修改市民卡',
+ area: '700px',
+ path: '[[@{/user/load4modifycard}]]',
+ finish: function () {
+ var tmpUpNo = admin.getTempData('t_updateCityNo');
+ console.log("xx",tmpUpNo);
+ if(undefined !=tmpUpNo && !isempty(tmpUpNo)){
+ table.reload('citizencardSearchTable', { where: {cardno: tmpUpNo}, page: {curr: 1} });
+ }else{
+ table.reload('citizencardSearchTable', {});
+ }
+ }
+ });
break;
}
});
diff --git a/payapi/src/main/resources/templates/system/user/updatecard.html b/payapi/src/main/resources/templates/system/user/updatecard.html
new file mode 100644
index 0000000..7e1cb74
--- /dev/null
+++ b/payapi/src/main/resources/templates/system/user/updatecard.html
@@ -0,0 +1,208 @@
+<form id="citizencard-modify-form" lay-filter="citizencard-modify-form" class="layui-form model-form">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>市民卡号</label>
+ <div class="layui-input-inline">
+ <input type="hidden" name="cid" class="layui-input"/>
+ <input type="hidden" name="bkid" class="layui-input"/>
+ <input name="cardno" placeholder="请输入市民卡号" type="text" class="layui-input" maxlength="10"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>物理卡号</label>
+ <div class="layui-input-inline">
+ <input name="cardphyid" placeholder="请输入电子物理卡号" type="text" class="layui-input" maxlength="8"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>卡有效期</label>
+ <div class="layui-input-inline">
+ <input name="expiredate" placeholder="请选择卡有效期" type="text" class="layui-input" maxlength="10"
+ id="citizencard-modify-expiredate" autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>卡状态</label>
+ <div class="layui-input-inline">
+ <select name="cardstatus" class="layui-input layui-select" lay-verify="required">
+ <option value="normal" selected>1_正常</option>
+ <option value="closed">9_注销</option>
+ <option value="abnormal">2_异常</option>
+ <option value="unuse">0_未启用</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>银行卡号</label>
+ <div class="layui-input-inline">
+ <input name="bankcardno" placeholder="请填写银行卡号" type="text" class="layui-input" maxlength="19"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>签约状态</label>
+ <div class="layui-input-inline">
+ <select name="signstatus" class="layui-input layui-select" lay-verify="required">
+ <option value="0" selected>未签约</option>
+ <option value="1">已签约</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>姓名</label>
+ <div class="layui-input-inline">
+ <input name="username" placeholder="请填写姓名" type="text" class="layui-input" maxlength="20"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>性别</label>
+ <div class="layui-input-inline">
+ <select name="sex" class="layui-input layui-select" lay-verify="required">
+ <option value="male" selected>男</option>
+ <option value="female">女</option>
+ <option value="unknown">未知</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>证件类型</label>
+ <div class="layui-input-inline">
+ <select name="idtype" class="layui-input layui-select" lay-verify="required">
+ <option value="idcard" selected>0_身份证</option>
+ <option value="residence_booklet">1_户口簿</option>
+ <option value="passport">2_护照</option>
+ <option value="hk_macau_pass">3_港澳居民来往内地通行证</option>
+ <option value="taiwan_pass">4_台湾同胞来往内地通行证</option>
+ <option value="foreigner_residence_permit">5_外国人居留证</option>
+ <option value="military_idcard">6_军官证</option>
+ <option value="soldier_idcard">7_士兵证</option>
+ <option value="unknown">9_其他</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label"><span style="color: red;">*</span>证件号</label>
+ <div class="layui-input-inline">
+ <input name="idno" placeholder="请输入证件号" type="text" class="layui-input" maxlength="18"
+ autocomplete="off" lay-verify="required" required/>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label">手机号</label>
+ <div class="layui-input-inline">
+ <input name="mobile" placeholder="请输入手机号" type="text" class="layui-input" maxlength="11"
+ autocomplete="off"/>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">邮箱</label>
+ <div class="layui-input-inline">
+ <input name="email" placeholder="请输入邮箱" type="text" class="layui-input" maxlength="60" autocomplete="off"/>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item model-form-footer">
+ <button class="layui-btn" lay-filter="citizencard-modify-form-submit" lay-submit id="citizencard-modify-ok">保存</button>
+ <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+ </div>
+</form>
+
+<script>
+ layui.use(['layer', 'admin', 'form', 'laydate'], function () {
+ var layer = layui.layer;
+ var admin = layui.admin;
+ var form = layui.form;
+ var laydate = layui.laydate;
+
+ form.render('select');
+ laydate.render({
+ elem: '#citizencard-modify-expiredate',
+ trigger: 'click'
+ });
+
+ //回显数据
+ var cardBean = admin.getTempData('t_citycard');
+ if (cardBean) {
+ console.log("修改市民卡回显:",cardBean);
+ form.val('citizencard-modify-form', {
+ cid:cardBean.cid,
+ bkid:cardBean.bkid,
+ cardno:cardBean.cardno,
+ cardphyid:cardBean.cardphyid,
+ expiredate:dateFormat(cardBean.expiredate),
+ cardstatus:updateCardStatus(cardBean.status),
+ bankcardno:cardBean.bankcardno,
+ signstatus: cardBean.signed?'1':'0',
+ username:cardBean.username,
+ sex:cardBean.sex,
+ idtype:cardBean.idtype,
+ idno:cardBean.idno,
+ mobile:cardBean.mobile,
+ email:cardBean.email
+ });
+ }
+
+ function updateCardStatus(stat){
+ if('normal' == stat || 'closed' == stat || 'abnormal'==stat || 'unuse' == stat){
+ return stat;
+ }
+ return 'abnormal';
+ }
+
+ // 表单提交事件
+ form.on('submit(citizencard-modify-form-submit)', function (data) {
+ layer.confirm("卡管系统同步数据,请谨慎修改!确定要保存修改吗?", function () {
+ layer.load(2);
+ var token_name = $("meta[name='_csrf_token']").attr("content");
+ var token = $("meta[name='_csrf_token']").attr("value");
+ data.field[token_name] = token;
+ $.ajax({
+ type : "POST",
+ dataType : "json",
+ url : '[[@{/user/cardupdate}]]',
+ data : data.field,
+ success : function(result) {
+ layer.closeAll('loading');
+ if (result.code === 200) {
+ layer.msg(result.msg, {icon: 1});
+ admin.putTempData('t_updateCityNo', data.field.cardno);
+ admin.finishPopupCenter();
+ } else if (result.code === 401) {
+ layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+ location.replace('[[@{/login}]]');
+ }, 1000);
+ } else {
+ console.log('err:' + result.code);
+ layer.msg(result.msg, {icon: 2});
+ }
+ },
+ error : function(err) {
+ admin.errorBack(err);
+ }
+ });
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file