From 70aaa61d68c24818eb218ec9d8193dab259c32bc Mon Sep 17 00:00:00 2001 From: Tang Cheng Date: Thu, 17 Oct 2019 18:03:15 +0800 Subject: [PATCH] =?utf8?q?=E6=94=B9=E8=BF=9B=E6=94=AF=E4=BB=98=E4=B8=9A?= =?utf8?q?=E5=8A=A1=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=8A=9E=E5=8D=A1?= =?utf8?q?=E4=B8=9A=E5=8A=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- config/application-devel-pg-local.properties | 23 +++ .../dlpay/api/bean/PublishCardParam.java | 157 ++++++++++++++++++ .../dlpay/api/bean/PublishCardResponse.java | 38 +++++ .../dlpay/paysdk/proxy/UserProxy.java | 13 ++ .../paysdktest/CitizenCardPayProxyTest.java | 36 +++- .../dlpay/framework/util/Subject.java | 10 +- .../dlpay/framework/util/TradeCode.java | 1 + .../api/controller/user_api_controller.kt | 140 +++++++++++++--- .../dlpay/framework/framework_util.kt | 10 ++ payapi/src/main/resources/data.sql | 6 + 10 files changed, 412 insertions(+), 22 deletions(-) create mode 100644 payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/PublishCardParam.java create mode 100644 payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/PublishCardResponse.java diff --git a/config/application-devel-pg-local.properties b/config/application-devel-pg-local.properties index 3b2dd4ad..d985780f 100644 --- a/config/application-devel-pg-local.properties +++ b/config/application-devel-pg-local.properties @@ -32,3 +32,26 @@ spring.cloud.consul.port=8500 resttemplate.proxy.type=http resttemplate.proxy.host=127.0.0.1 resttemplate.proxy.port=1087 + +#============== kafka =================== +# 指定kafka 代理地址,可以多个 +spring.kafka.bootstrap-servers=172.28.201.101:9192 +#=============== provider ======================= +spring.kafka.producer.retries=3 +# 每次批量发送消息的数量 +spring.kafka.producer.batch-size=16384 +spring.kafka.producer.buffer-memory=33554432 +# 指定消息key和消息体的编解码方式 +spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer +spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer + +#===============kafka consumer ======================= +# 指定默认消费者group id +spring.kafka.listen.auto.start=false +spring.kafka.consumer.group-id=epaymessager1 +spring.kafka.consumer.auto-offset-reset=earliest +spring.kafka.consumer.enable-auto-commit=true +spring.kafka.consumer.auto-commit-interval=100 +# 指定消息key和消息体的编解码方式 +spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer +spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer \ No newline at end of file diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/PublishCardParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/PublishCardParam.java new file mode 100644 index 00000000..f992df5f --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/PublishCardParam.java @@ -0,0 +1,157 @@ +package com.supwisdom.dlpay.api.bean; + +import com.sun.java.swing.action.CancelAction; +import com.supwisdom.dlpay.api.APIRequestParam; +import com.supwisdom.dlpay.api.bean.groups.ConfirmAction; +import com.supwisdom.dlpay.api.bean.groups.InitAction; +import com.supwisdom.dlpay.api.bean.groups.QueryAction; +import com.supwisdom.dlpay.api.exception.RequestParamCheckException; + +import javax.validation.constraints.NotNull; + +public class PublishCardParam extends APIRequestParam { + @NotNull(message = "操作员ID不能为空", groups = {InitAction.class, ConfirmAction.class, QueryAction.class}) + private String operid; + + private @NotNull(message = "操作员流水号不能为空", groups = {InitAction.class, ConfirmAction.class, QueryAction.class}) String operSeqno; + + @NotNull(groups = {InitAction.class}) + private String transdate; + + @NotNull(groups = {InitAction.class}) + private String transtime; + + private String userid; + + @NotNull + private Integer totalAmount; + + private String capitalSubjno; + + @NotNull + private Integer cost; + + @NotNull + private Integer cashPledge; + + @NotNull + private Integer charge; + + @NotNull(message = "交易摘要不能为空", groups = {InitAction.class}) + private String summary; + + @NotNull(message = "记账日期不能为空", groups = {ConfirmAction.class, CancelAction.class, QueryAction.class}) + private String accdate; + + @NotNull(message = "交易参考号不能为空", groups = {ConfirmAction.class, CancelAction.class, QueryAction.class}) + private String refno; + + public String getOperid() { + return operid; + } + + public void setOperid(String operid) { + this.operid = operid; + } + + public @NotNull(message = "操作员流水号不能为空", groups = {InitAction.class, ConfirmAction.class, QueryAction.class}) String getOperSeqno() { + return operSeqno; + } + + public void setOperSeqno(@NotNull(message = "操作员流水号不能为空", groups = {InitAction.class, ConfirmAction.class, QueryAction.class}) String operSeqno) { + this.operSeqno = operSeqno; + } + + public String getUserid() { + return userid; + } + + public void setUserid(String userid) { + this.userid = userid; + } + + public Integer getTotalAmount() { + return totalAmount; + } + + public void setTotalAmount(Integer totalAmount) { + this.totalAmount = totalAmount; + } + + public String getAccdate() { + return accdate; + } + + public void setAccdate(String accdate) { + this.accdate = accdate; + } + + public String getRefno() { + return refno; + } + + public void setRefno(String refno) { + this.refno = refno; + } + + public String getTransdate() { + return transdate; + } + + public void setTransdate(String transdate) { + this.transdate = transdate; + } + + public String getTranstime() { + return transtime; + } + + public void setTranstime(String transtime) { + this.transtime = transtime; + } + + public String getCapitalSubjno() { + return capitalSubjno; + } + + public void setCapitalSubjno(String capitalSubjno) { + this.capitalSubjno = capitalSubjno; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String summary) { + this.summary = summary; + } + + public Integer getCost() { + return cost; + } + + public void setCost(Integer cost) { + this.cost = cost; + } + + public Integer getCashPledge() { + return cashPledge; + } + + public void setCashPledge(Integer cashPledge) { + this.cashPledge = cashPledge; + } + + public Integer getCharge() { + return charge; + } + + public void setCharge(Integer charge) { + this.charge = charge; + } + + @Override + public boolean checkParam() throws RequestParamCheckException { + return true; + } +} diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/PublishCardResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/PublishCardResponse.java new file mode 100644 index 00000000..77be206a --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/PublishCardResponse.java @@ -0,0 +1,38 @@ +package com.supwisdom.dlpay.api.bean; + +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +public class PublishCardResponse extends ApiResponse { + private String refno; + + private String accdate; + + private String description; + + public String getRefno() { + return refno; + } + + public void setRefno(String refno) { + this.refno = refno; + } + + public String getAccdate() { + return accdate; + } + + public void setAccdate(String accdate) { + this.accdate = accdate; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java index a8e7808a..e023ec70 100644 --- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java +++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java @@ -1,6 +1,7 @@ package com.supwisdom.dlpay.paysdk.proxy; import com.supwisdom.dlpay.api.bean.*; +import org.reactivestreams.Publisher; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -25,4 +26,16 @@ public interface UserProxy { @PostMapping("/api/user/testmsg") ApiResponse testmsg(); + + @PostMapping("/api/user/biz_init") + PublishCardResponse bizInit(@RequestBody PublishCardParam param); + + @PostMapping("/api/user/biz_confirm") + PublishCardResponse bizConfirm(@RequestBody PublishCardParam param); + + @PostMapping("/api/user/biz_refund") + PublishCardResponse bizRefund(@RequestBody PublishCardParam param); + + @PostMapping("/api/user/biz_query") + PublishCardResponse bizQuery(@RequestBody PublishCardParam param); } diff --git a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java index 32ca0f35..29919c58 100644 --- a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java +++ b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java @@ -30,7 +30,7 @@ import static org.hamcrest.Matchers.notNullValue; @RunWith(SpringRunner.class) @SpringBootTest(properties = { - "payapi.url=http://localhost:8099/payapi"}, + "payapi.url=http://localhost:8080/payapi"}, classes = CitizenCardPayProxyTest.class) @ImportAutoConfiguration({RibbonAutoConfiguration.class, FeignRibbonClientAutoConfiguration.class, FeignAutoConfiguration.class, @@ -39,7 +39,7 @@ import static org.hamcrest.Matchers.notNullValue; @ComponentScan(basePackages = {"com.supwisdom.dlpay.paysdk"}) public class CitizenCardPayProxyTest { private final static String appid = "700001"; - private final static String secret = "5f788ce433ec44f299351cdf7f137e81"; + private final static String secret = "d6dd7f0d4551419d8d11736d0f28df0d"; @Autowired private ApiLoginProxy apiLoginProxy; @@ -230,6 +230,38 @@ public class CitizenCardPayProxyTest { response.getRetcode(), equalTo(0)); } + @Test + public void testPublishCard() { + ApiLoginHelper helper = new ApiLoginHelper(apiLoginProxy); + helper.login(appid, secret); + + PublishCardParam param = new PublishCardParam(); + param.setTransdate(DateUtil.getNow("yyyyMMdd")); + param.setTranstime(DateUtil.getNow("HHmmss")); + param.setOperid("1001"); + param.setOperSeqno(param.getTransdate() + param.getTranstime()); + param.setTotalAmount(10000); + param.setCapitalSubjno("112201"); + param.setSummary("发卡"); + param.setCost(1000); + param.setCharge(0); + param.setCashPledge(0); + param.setUserid("ff8080816dd8f3a6016dd8f5e5d80002"); + + PublishCardResponse response = userProxy.bizInit(param); + + assertThat("user card biz init " + response.getRetcode() + response.getRetmsg() + response.getException(), + response.getRetcode(), equalTo(0)); + + param.setAccdate(response.getAccdate()); + param.setRefno(response.getRefno()); + response = userProxy.bizConfirm(param); + + assertThat("user card biz confirm " + response.getRetcode() + response.getRetmsg() + response.getException(), + response.getRetcode(), equalTo(0)); + + } + @Test public void thirdpay() { diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java index e80344a0..e11c1713 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java @@ -104,7 +104,6 @@ public class Subject { public static final String SUBJNO_PERSONAL_REFUND = "220211"; - //======================= 损益类 =====================// /** * 手续费收入 - 支付宝充值手续费 @@ -121,6 +120,10 @@ public class Subject { */ public static final String SUBJNO_SERVICEFEE_UNIONPAY = "602103"; + /** + * 手续费收入 - 默认 + */ + public static final String SUBJNO_SERVICEFEE_DEFAULT = "602104"; /** * 销售费用 - (消费)折扣优惠款 @@ -137,4 +140,9 @@ public class Subject { */ public static final String SUBJNO_MANAGEFEE = "6602"; + /** + * 卡成本费 + */ + public static final String SUBJNO_CARD_COST = "6025"; + } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeCode.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeCode.java index b78049f9..d1a85b84 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeCode.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeCode.java @@ -30,5 +30,6 @@ public class TradeCode { public static final int TRANSCODE_ERCHARGE = 3500; //账户充值 + public static final int TRANSCODE_CARD_BIZ = 1007; // 卡务业务 } diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt index 36881910..271af870 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt @@ -1,35 +1,40 @@ package com.supwisdom.dlpay.api.controller -import com.supwisdom.dlpay.api.bean.ModifyUserParam -import com.supwisdom.dlpay.api.bean.OpenUserParam -import com.supwisdom.dlpay.api.bean.QueryCardsParam -import com.supwisdom.dlpay.api.bean.QueryUserParam +import com.supwisdom.dlpay.api.TransactionBuilder +import com.supwisdom.dlpay.api.bean.* +import com.supwisdom.dlpay.api.bean.groups.ConfirmAction +import com.supwisdom.dlpay.api.bean.groups.InitAction import com.supwisdom.dlpay.api.exception.RequestParamCheckException -import com.supwisdom.dlpay.api.service.CardService -import com.supwisdom.dlpay.api.service.KafkaSendMsgService -import com.supwisdom.dlpay.api.service.UserService +import com.supwisdom.dlpay.api.service.* import com.supwisdom.dlpay.exception.TransactionException -import com.supwisdom.dlpay.exception.TransactionProcessException import com.supwisdom.dlpay.framework.ResponseBodyBuilder -import com.supwisdom.dlpay.framework.service.CommonService +import com.supwisdom.dlpay.framework.util.Subject +import com.supwisdom.dlpay.framework.util.TradeCode +import com.supwisdom.dlpay.framework.util.TradeDict import com.supwisdom.dlpay.framework.util.TradeErrorCode import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity +import org.springframework.validation.annotation.Validated import org.springframework.web.bind.annotation.* import java.net.URLDecoder -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import javax.validation.Valid @RestController @RequestMapping("/api/user") class UserAPIController { @Autowired private lateinit var useService: UserService + + @Autowired + private lateinit var accountUtilServcie: AccountUtilServcie @Autowired private lateinit var cardService: CardService @Autowired private lateinit var kafkaSendMsgService: KafkaSendMsgService + @Autowired + private lateinit var transactionService: TransactionServiceProxy + @PostMapping("/open") fun openAccount(@RequestBody param: OpenUserParam): ResponseEntity { @@ -127,16 +132,17 @@ class UserAPIController { .transException(et, "业务处理错误")) } } + @PostMapping("/querybycardno") fun querybycardno(@RequestBody param: QueryUserParam): ResponseEntity { val ret = when (!param.userid.isNullOrEmpty()) { true -> cardService.getPersonByUserid(param.userid) false -> cardService.getPersonByCardno(param.citizencardno, param.bankcardno) } - return if(ret.retcode==0){ + return if (ret.retcode == 0) { ResponseEntity.ok(ResponseBodyBuilder.create() - .success(ret,"ok")) - }else{ + .success(ret, "ok")) + } else { ResponseEntity.ok(ResponseBodyBuilder.create() .fail(ret.retcode, ret.retmsg)) } @@ -145,10 +151,10 @@ class UserAPIController { @PostMapping("/querycards") fun querycards(@RequestBody param: QueryCardsParam): ResponseEntity { val ret = cardService.getCardsByLastsaveDate(param.starttime, param.endtime) - return if(ret.retcode==0){ + return if (ret.retcode == 0) { ResponseEntity.ok(ResponseBodyBuilder.create() - .success(ret,"ok")) - }else{ + .success(ret, "ok")) + } else { ResponseEntity.ok(ResponseBodyBuilder.create() .fail(ret.retcode, ret.retmsg)) } @@ -156,8 +162,104 @@ class UserAPIController { @PostMapping("/testmsg") fun testmsg(): ResponseEntity { - kafkaSendMsgService.sendJpushMessage("402882816c2727a2016c2728165f0001","交易提醒","你有一笔0.01元的支出,点击查看详情","20190725133506000018", mutableMapOf(),"") - return ResponseEntity.ok(ResponseBodyBuilder.create() + kafkaSendMsgService.sendJpushMessage("402882816c2727a2016c2728165f0001", "交易提醒", + "你有一笔0.01元的支出,点击查看详情", "20190725133506000018", mutableMapOf(), "") + return ResponseEntity.ok(ResponseBodyBuilder.create() .success("ok")) } + + @PostMapping("/biz_init") + fun userBizInit(@RequestBody @Validated(InitAction::class) request: PublishCardParam): ResponseEntity { + val builder = TransactionBuilder().apply { + setTransInfo(request.transdate, request.transtime, TradeCode.TRANSCODE_CARD_BIZ, "balance") + setOutTransInfo(request.operid, request.operSeqno) + dtltype = "cardservice" + description = request.summary + } + val result = PublishCardResponse() + + val user = useService.findAccountByUserid(request.userid, null) + ?: return ResponseBodyBuilder.failEntity(result, + TradeErrorCode.ACCOUNT_NOT_EXISTS, + "用户ID ${request.userid} 不存在") + + if (user.transStatus != TradeDict.STATUS_NORMAL) { + return ResponseBodyBuilder.failEntity(result, + TradeErrorCode.ACCOUNT_NOT_EXISTS, + "用户ID ${request.userid} 状态异常") + } + + val capitalSubj = accountUtilServcie.readSubject(request.capitalSubjno) + + builder.person(user).apply { + setAmount(request.totalAmount / 100.0, TradeDict.TRADE_FLAG_IN) + setOpposite(capitalSubj.subjno, capitalSubj.subjname) + } + + val depositAmount = request.totalAmount - request.cost - request.cashPledge - request.charge + + if (depositAmount < 0) { + return ResponseBodyBuilder.failEntity(result, + TradeErrorCode.INPUT_DATA_ERROR, + "交易金额错误") + } + if (depositAmount != 0 && request.totalAmount != 0) { + if (depositAmount > 0) { + builder.addDebitCreditRecord(capitalSubj.subjno, capitalSubj.subjname, + user.accno, Subject.SUBJNO_PERSONAL_DEPOSIT, request.totalAmount / 100.0, request.summary) + } + val transDesc = arrayListOf() + if (request.cost > 0) { + val subject = accountUtilServcie.readSubject(Subject.SUBJNO_CARD_COST) + builder.addDebitCreditRecord(user.accno, Subject.SUBJNO_PERSONAL_DEPOSIT, + subject.subjno, subject.subjno, request.cost / 100.0, + request.summary) + transDesc.add("卡成本费" + "%.2f".format(request.cost / 100.0) + " 元") + + } + if (request.cashPledge > 0) { + val subject = accountUtilServcie.readSubject(Subject.SUBJNO_FOREGIFT) + builder.addDebitCreditRecord(user.accno, Subject.SUBJNO_PERSONAL_DEPOSIT, + subject.subjno, subject.subjno, request.cashPledge / 100.0, + request.summary) + transDesc.add("卡押金" + "%.2f".format(request.cashPledge / 100.0) + " 元") + } + if (request.charge > 0) { + val subject = accountUtilServcie.readSubject(Subject.SUBJNO_SERVICEFEE_DEFAULT) + builder.addDebitCreditRecord(user.accno, Subject.SUBJNO_PERSONAL_DEPOSIT, + subject.subjno, subject.subjno, request.charge / 100.0, + request.summary) + transDesc.add("手续费" + "%.2f".format(request.charge / 100.0) + " 元") + } + builder.description += transDesc.joinToString(";") + } + val transaction = transactionService.init(builder) + + result.apply { + accdate = transaction.accdate + refno = transaction.refno + description = builder.description + } + return ResponseBodyBuilder.successEntity(result, "${request.summary}初始化成功") + } + + @PostMapping("/biz_confirm") + fun userBizConfirm(@RequestBody @Validated(ConfirmAction::class) request: PublishCardParam): ResponseEntity { + val transaction = transactionService.success(request.refno) + val response = PublishCardResponse().apply { + accdate = transaction.accdate + refno = transaction.refno + } + return ResponseBodyBuilder.successEntity(response, "${request.summary}确认成功") + } + + @PostMapping("/biz_refund") + fun userBizRefund(@RequestBody @Valid request: PublishCardParam): ResponseEntity { + return ResponseEntity.ok(ResponseBodyBuilder.create().success()) + } + + @GetMapping("/biz_query") + fun userBizQuery(@RequestBody @Valid request: PublishCardParam): ResponseEntity { + return ResponseEntity.ok(ResponseBodyBuilder.create().success()) + } } \ No newline at end of file diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt index 1f63e384..c9d61a11 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt @@ -8,6 +8,7 @@ import com.supwisdom.dlpay.exception.TransactionCheckException import com.supwisdom.dlpay.exception.TransactionException import com.supwisdom.dlpay.framework.util.TradeErrorCode import mu.KotlinLogging +import org.springframework.http.ResponseEntity class ResponseBodyBuilder private constructor() { @@ -16,6 +17,14 @@ class ResponseBodyBuilder private constructor() { private val RESERVED_KEY = setOf("retcode", "retmsg") private val LOGGER = KotlinLogging.logger {} fun create() = ResponseBodyBuilder() + + fun successEntity(bean: ApiResponse, msg: String? = null): ResponseEntity { + return ResponseEntity.ok(create().success(bean, msg)) + } + + fun failEntity(bean: ApiResponse, code: Int, msg: String): ResponseEntity { + return ResponseEntity.ok(create().fail(bean, code, msg)) + } } private var retCode = INVALIDE_RETCODE @@ -44,6 +53,7 @@ class ResponseBodyBuilder private constructor() { return bean } + fun fail(code: Int, msg: String): Map { if (code == 0) { throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "错误码未正确定义") diff --git a/payapi/src/main/resources/data.sql b/payapi/src/main/resources/data.sql index bcdf83ce..7244bf30 100644 --- a/payapi/src/main/resources/data.sql +++ b/payapi/src/main/resources/data.sql @@ -534,6 +534,10 @@ VALUES (25, '602102', 2, 'y', 1, '6021', 20190430, 2, '微信充值手续费', 6 INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid") VALUES (26, '602103', 2, 'n', 1, '6021', 20190430, 2, '银联充值手续费', 6, '{tenantid}'); INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid") +VALUES (32, '602104', 2, 'n', 1, '6021', 20190430, 2, '收手续费', 6, '{tenantid}'); +INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid") +VALUES (31, '6025', 2, 'y', 0, NULL, 20190430, 1, '卡成本费收入', 6, '{tenantid}'); +INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid") VALUES (27, '6601', 2, 'y', 0, NULL, 20190430, 1, '销售费用', 6, '{tenantid}'); INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid") VALUES (28, '660101', 2, 'y', 1, '6601', 20190430, 2, '折扣优惠款', 6, '{tenantid}'); @@ -700,6 +704,8 @@ INSERT INTO "tb_dictionary" ("id", "dictval", "dicttype", "dictcaption", "dictty VALUES (29, 'canteen', 'dtltypeList', '食堂就餐', '流水类型', '{tenantid}'); INSERT INTO "tb_dictionary" ("id", "dictval", "dicttype", "dictcaption", "dicttypename", "tenantid") VALUES (30, 'shopmarket', 'dtltypeList', '商超消费', '流水类型', '{tenantid}'); +INSERT INTO "tb_dictionary" ("id", "dictval", "dicttype", "dictcaption", "dicttypename", "tenantid") +VALUES (31, 'cardservice', 'dtltypeList', '卡务流水', '流水类型', '{tenantid}'); -- 2.17.1