diff --git a/cweb/src/main/java/com/cweb/controller/OcrController.java b/cweb/src/main/java/com/cweb/controller/OcrController.java
new file mode 100644
index 0000000..73f4df3
--- /dev/null
+++ b/cweb/src/main/java/com/cweb/controller/OcrController.java
@@ -0,0 +1,71 @@
+package com.cweb.controller;
+
+import com.hfkj.common.security.UserCenter;
+import com.hfkj.common.utils.ResponseMsgUtil;
+import com.hfkj.model.ResponseData;
+import com.hfkj.common.ocr.AliYunOcrService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping(value = "/ocr")
+@Api(value = "ocr识别")
+public class OcrController {
+
+ private static Logger log = LoggerFactory.getLogger(OcrController.class);
+
+ @RequestMapping(value="/recognizeIdCard",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "身份证识别")
+ public ResponseData recognizeIdCard(@RequestParam(name = "url", required = true) String url) {
+ try {
+ return ResponseMsgUtil.success(AliYunOcrService.recognizeIdCard(url));
+ } catch (Exception e) {
+ log.error("recognizeIdCard error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
+ @RequestMapping(value="/recognizeBankCard",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "银行卡识别")
+ public ResponseData recognizeBankCard(@RequestParam(name = "url", required = true) String url) {
+ try {
+ return ResponseMsgUtil.success(AliYunOcrService.recognizeBankCard(url));
+ } catch (Exception e) {
+ log.error("recognizeBankCard error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
+ @RequestMapping(value="/recognizeBankAccount",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "银行开户许可证识别")
+ public ResponseData recognizeBankAccount(@RequestParam(name = "url", required = true) String url) {
+ try {
+ return ResponseMsgUtil.success(AliYunOcrService.recognizeBankAccount(url));
+ } catch (Exception e) {
+ log.error("recognizeBankCard error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
+ @RequestMapping(value="/recognizeBusinessLicense",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "营业执照识别")
+ public ResponseData recognizeBusinessLicense(@RequestParam(name = "url", required = true) String url) {
+ try {
+ return ResponseMsgUtil.success(AliYunOcrService.recognizeBusinessLicense(url));
+ } catch (Exception e) {
+ log.error("recognizeBusinessLicense error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+}
diff --git a/order/src/main/java/com/order/controller/OrderPayController.java b/order/src/main/java/com/order/controller/OrderPayController.java
index e10bf6a..34c589b 100644
--- a/order/src/main/java/com/order/controller/OrderPayController.java
+++ b/order/src/main/java/com/order/controller/OrderPayController.java
@@ -6,10 +6,15 @@ import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.security.UserCenter;
import com.hfkj.common.utils.ResponseMsgUtil;
+import com.hfkj.entity.BsUserCard;
import com.hfkj.model.ResponseData;
+import com.hfkj.model.UserSessionObject;
import com.hfkj.model.order.OrderModel;
+import com.hfkj.service.card.BsUserCardService;
import com.hfkj.service.order.BsOrderService;
+import com.hfkj.service.order.OrderPayService;
import com.hfkj.service.pay.HuiPayService;
+import com.hfkj.sysenum.UserCardTypeEnum;
import com.hfkj.sysenum.order.OrderPayChannelEnum;
import com.hfkj.sysenum.order.OrderPayTypeEnum;
import com.hfkj.sysenum.order.OrderStatusEnum;
@@ -40,6 +45,12 @@ public class OrderPayController {
Logger log = LoggerFactory.getLogger(OrderPayController.class);
@Resource
private BsOrderService orderService;
+ @Resource
+ private OrderPayService orderPayService;
+ @Resource
+ private UserCenter userCenter;
+ @Resource
+ private BsUserCardService userCardService;
@RequestMapping(value="/wechat",method = RequestMethod.POST)
@ResponseBody
@@ -102,5 +113,43 @@ public class OrderPayController {
}
}
+ @RequestMapping(value = "/cardPay", method = RequestMethod.POST)
+ @ResponseBody
+ @ApiOperation(value = "卡支付")
+ public ResponseData cardPay(@RequestBody JSONObject body) {
+ try {
+ // 用户
+ UserSessionObject userSessionObject = userCenter.getSessionModel(UserSessionObject.class);
+ if (userSessionObject == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, "");
+ }
+ if (body == null
+ || StringUtils.isBlank(body.getString("orderNo"))
+ || StringUtils.isBlank(body.getString("cardNo"))) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
+ }
+
+ // 查询用户与卡号的关系
+ BsUserCard card = userCardService.getCard(userSessionObject.getUser().getId(), body.getString("cardNo"));
+ if (card == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未绑定卡号");
+ }
+ // 查询订单
+ OrderModel order = orderService.getDetail(body.getString("orderNo"));
+ if (!order.getOrderStatus().equals(OrderStatusEnum.status1.getCode())) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "支付失败!交易订单不处于待支付状态");
+ }
+ if (UserCardTypeEnum.type1.getCode() == card.getType()) {
+ return ResponseMsgUtil.success(orderPayService.hltCardPay(order, card));
+
+ } else {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的卡号类型");
+ }
+
+ } catch (Exception e) {
+ log.error("OrderPayController -> cardPay() error!", e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
}
diff --git a/service/pom.xml b/service/pom.xml
index 153f99a..594c1dd 100644
--- a/service/pom.xml
+++ b/service/pom.xml
@@ -243,6 +243,11 @@
esdk-obs-java-bundle
[3.21.8,)
+
+ com.aliyun
+ ocr_api20210707
+ 1.1.1
+
diff --git a/service/src/main/java/com/hfkj/common/ocr/AliYunOcrService.java b/service/src/main/java/com/hfkj/common/ocr/AliYunOcrService.java
new file mode 100644
index 0000000..c09b960
--- /dev/null
+++ b/service/src/main/java/com/hfkj/common/ocr/AliYunOcrService.java
@@ -0,0 +1,97 @@
+package com.hfkj.common.ocr;
+
+import com.aliyun.ocr_api20210707.Client;
+import com.aliyun.ocr_api20210707.models.*;
+import com.aliyun.teaopenapi.models.Config;
+
+/**
+ * 阿里云识别
+ * @author hurui
+ */
+public class AliYunOcrService {
+
+ /**
+ * 创建请求
+ * @return
+ * @throws Exception
+ */
+ private static Client createClient() throws Exception {
+ Config config = new Config()
+ // 您的AccessKey ID
+ .setAccessKeyId("LTAI5tAu96cTs6b87vdfZivT")
+ // 您的AccessKey Secret
+ .setAccessKeySecret("67SmjGewt0zKGrhQeDKGbbk5lE3tAi");
+ // 访问的域名
+ config.endpoint = "ocr-api.cn-hangzhou.aliyuncs.com";
+ return new Client(config);
+ }
+
+ /**
+ * 身份证识别
+ * @param url 访问地址
+ * @return
+ */
+ public static RecognizeIdcardResponseBody recognizeIdCard(String url) {
+ try {
+ Client client = createClient();
+ RecognizeIdcardRequest recognizeIdcardRequest = new RecognizeIdcardRequest().setUrl(url);
+ RecognizeIdcardResponse response = client.recognizeIdcard(recognizeIdcardRequest);
+ return response.getBody();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 银行卡识别
+ * @param url 访问地址
+ * @return
+ */
+ public static RecognizeBankCardResponseBody recognizeBankCard(String url) {
+ try {
+ Client client = createClient();
+ RecognizeBankCardRequest recognizeBankCardRequest = new RecognizeBankCardRequest().setUrl(url);
+ RecognizeBankCardResponse response = client.recognizeBankCard(recognizeBankCardRequest);
+ return response.getBody();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 银行开户许可证识别
+ * @param url 访问地址
+ * @return
+ */
+ public static RecognizeBankAccountLicenseResponseBody recognizeBankAccount(String url) {
+ try {
+ Client client = createClient();
+ RecognizeBankAccountLicenseRequest recognizeBankAccountLicenseRequest = new RecognizeBankAccountLicenseRequest().setUrl(url);
+ RecognizeBankAccountLicenseResponse response = client.recognizeBankAccountLicense(recognizeBankAccountLicenseRequest);
+ return response.getBody();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ /**
+ * 营业执照识别
+ * @param url 访问地址
+ * @return
+ */
+ public static RecognizeBusinessLicenseResponseBody recognizeBusinessLicense(String url) {
+ try {
+ Client client = createClient();
+ RecognizeBusinessLicenseRequest request = new RecognizeBusinessLicenseRequest().setUrl(url);
+ RecognizeBusinessLicenseResponse response = client.recognizeBusinessLicense(request);
+ return response.getBody();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
diff --git a/service/src/main/java/com/hfkj/config/MessageConfig.java b/service/src/main/java/com/hfkj/config/MessageConfig.java
index a4b12d1..c83195c 100644
--- a/service/src/main/java/com/hfkj/config/MessageConfig.java
+++ b/service/src/main/java/com/hfkj/config/MessageConfig.java
@@ -46,6 +46,8 @@ public class MessageConfig {
// 嗨森逛账号登录支付密码修改
public final static String HWMSG_ID6 = "SMS_22072500001";
+ public final static String HWMSG_ID7 = "SMS_24051700003";
+
private static final String[] HEX_DIGITS = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
private static Logger log = LoggerFactory.getLogger(MessageConfig.class);
diff --git a/service/src/main/java/com/hfkj/dao/BsUserCardMapper.java b/service/src/main/java/com/hfkj/dao/BsUserCardMapper.java
new file mode 100644
index 0000000..9bac2e3
--- /dev/null
+++ b/service/src/main/java/com/hfkj/dao/BsUserCardMapper.java
@@ -0,0 +1,117 @@
+package com.hfkj.dao;
+
+import com.hfkj.entity.BsUserCard;
+import com.hfkj.entity.BsUserCardExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.DeleteProvider;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.InsertProvider;
+import org.apache.ibatis.annotations.Options;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Result;
+import org.apache.ibatis.annotations.Results;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.SelectProvider;
+import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.annotations.UpdateProvider;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.stereotype.Repository;
+
+/**
+ *
+ * 代码由工具生成,请勿修改!!!
+ * 如果需要扩展请在其父类进行扩展
+ *
+ **/
+@Repository
+public interface BsUserCardMapper extends BsUserCardMapperExt {
+ @SelectProvider(type=BsUserCardSqlProvider.class, method="countByExample")
+ long countByExample(BsUserCardExample example);
+
+ @DeleteProvider(type=BsUserCardSqlProvider.class, method="deleteByExample")
+ int deleteByExample(BsUserCardExample example);
+
+ @Delete({
+ "delete from bs_user_card",
+ "where id = #{id,jdbcType=BIGINT}"
+ })
+ int deleteByPrimaryKey(Long id);
+
+ @Insert({
+ "insert into bs_user_card (user_id, `type`, ",
+ "card_no, `status`, ",
+ "create_time, update_time, ",
+ "ext_1, ext_2, ext_3)",
+ "values (#{userId,jdbcType=BIGINT}, #{type,jdbcType=INTEGER}, ",
+ "#{cardNo,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, ",
+ "#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ",
+ "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
+ })
+ @Options(useGeneratedKeys=true,keyProperty="id")
+ int insert(BsUserCard record);
+
+ @InsertProvider(type=BsUserCardSqlProvider.class, method="insertSelective")
+ @Options(useGeneratedKeys=true,keyProperty="id")
+ int insertSelective(BsUserCard record);
+
+ @SelectProvider(type=BsUserCardSqlProvider.class, method="selectByExample")
+ @Results({
+ @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true),
+ @Result(column="user_id", property="userId", jdbcType=JdbcType.BIGINT),
+ @Result(column="type", property="type", jdbcType=JdbcType.INTEGER),
+ @Result(column="card_no", property="cardNo", jdbcType=JdbcType.VARCHAR),
+ @Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
+ @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
+ @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
+ @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
+ @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
+ @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
+ })
+ List selectByExample(BsUserCardExample example);
+
+ @Select({
+ "select",
+ "id, user_id, `type`, card_no, `status`, create_time, update_time, ext_1, ext_2, ",
+ "ext_3",
+ "from bs_user_card",
+ "where id = #{id,jdbcType=BIGINT}"
+ })
+ @Results({
+ @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true),
+ @Result(column="user_id", property="userId", jdbcType=JdbcType.BIGINT),
+ @Result(column="type", property="type", jdbcType=JdbcType.INTEGER),
+ @Result(column="card_no", property="cardNo", jdbcType=JdbcType.VARCHAR),
+ @Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
+ @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
+ @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
+ @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
+ @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
+ @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
+ })
+ BsUserCard selectByPrimaryKey(Long id);
+
+ @UpdateProvider(type=BsUserCardSqlProvider.class, method="updateByExampleSelective")
+ int updateByExampleSelective(@Param("record") BsUserCard record, @Param("example") BsUserCardExample example);
+
+ @UpdateProvider(type=BsUserCardSqlProvider.class, method="updateByExample")
+ int updateByExample(@Param("record") BsUserCard record, @Param("example") BsUserCardExample example);
+
+ @UpdateProvider(type=BsUserCardSqlProvider.class, method="updateByPrimaryKeySelective")
+ int updateByPrimaryKeySelective(BsUserCard record);
+
+ @Update({
+ "update bs_user_card",
+ "set user_id = #{userId,jdbcType=BIGINT},",
+ "`type` = #{type,jdbcType=INTEGER},",
+ "card_no = #{cardNo,jdbcType=VARCHAR},",
+ "`status` = #{status,jdbcType=INTEGER},",
+ "create_time = #{createTime,jdbcType=TIMESTAMP},",
+ "update_time = #{updateTime,jdbcType=TIMESTAMP},",
+ "ext_1 = #{ext1,jdbcType=VARCHAR},",
+ "ext_2 = #{ext2,jdbcType=VARCHAR},",
+ "ext_3 = #{ext3,jdbcType=VARCHAR}",
+ "where id = #{id,jdbcType=BIGINT}"
+ })
+ int updateByPrimaryKey(BsUserCard record);
+}
\ No newline at end of file
diff --git a/service/src/main/java/com/hfkj/dao/BsUserCardMapperExt.java b/service/src/main/java/com/hfkj/dao/BsUserCardMapperExt.java
new file mode 100644
index 0000000..920112d
--- /dev/null
+++ b/service/src/main/java/com/hfkj/dao/BsUserCardMapperExt.java
@@ -0,0 +1,7 @@
+package com.hfkj.dao;
+
+/**
+ * mapper扩展类
+ */
+public interface BsUserCardMapperExt {
+}
\ No newline at end of file
diff --git a/service/src/main/java/com/hfkj/dao/BsUserCardSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsUserCardSqlProvider.java
new file mode 100644
index 0000000..da210f3
--- /dev/null
+++ b/service/src/main/java/com/hfkj/dao/BsUserCardSqlProvider.java
@@ -0,0 +1,304 @@
+package com.hfkj.dao;
+
+import com.hfkj.entity.BsUserCard;
+import com.hfkj.entity.BsUserCardExample.Criteria;
+import com.hfkj.entity.BsUserCardExample.Criterion;
+import com.hfkj.entity.BsUserCardExample;
+import java.util.List;
+import java.util.Map;
+import org.apache.ibatis.jdbc.SQL;
+
+public class BsUserCardSqlProvider {
+
+ public String countByExample(BsUserCardExample example) {
+ SQL sql = new SQL();
+ sql.SELECT("count(*)").FROM("bs_user_card");
+ applyWhere(sql, example, false);
+ return sql.toString();
+ }
+
+ public String deleteByExample(BsUserCardExample example) {
+ SQL sql = new SQL();
+ sql.DELETE_FROM("bs_user_card");
+ applyWhere(sql, example, false);
+ return sql.toString();
+ }
+
+ public String insertSelective(BsUserCard record) {
+ SQL sql = new SQL();
+ sql.INSERT_INTO("bs_user_card");
+
+ if (record.getUserId() != null) {
+ sql.VALUES("user_id", "#{userId,jdbcType=BIGINT}");
+ }
+
+ if (record.getType() != null) {
+ sql.VALUES("`type`", "#{type,jdbcType=INTEGER}");
+ }
+
+ if (record.getCardNo() != null) {
+ sql.VALUES("card_no", "#{cardNo,jdbcType=VARCHAR}");
+ }
+
+ if (record.getStatus() != null) {
+ sql.VALUES("`status`", "#{status,jdbcType=INTEGER}");
+ }
+
+ if (record.getCreateTime() != null) {
+ sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}");
+ }
+
+ if (record.getUpdateTime() != null) {
+ sql.VALUES("update_time", "#{updateTime,jdbcType=TIMESTAMP}");
+ }
+
+ if (record.getExt1() != null) {
+ sql.VALUES("ext_1", "#{ext1,jdbcType=VARCHAR}");
+ }
+
+ if (record.getExt2() != null) {
+ sql.VALUES("ext_2", "#{ext2,jdbcType=VARCHAR}");
+ }
+
+ if (record.getExt3() != null) {
+ sql.VALUES("ext_3", "#{ext3,jdbcType=VARCHAR}");
+ }
+
+ return sql.toString();
+ }
+
+ public String selectByExample(BsUserCardExample example) {
+ SQL sql = new SQL();
+ if (example != null && example.isDistinct()) {
+ sql.SELECT_DISTINCT("id");
+ } else {
+ sql.SELECT("id");
+ }
+ sql.SELECT("user_id");
+ sql.SELECT("`type`");
+ sql.SELECT("card_no");
+ sql.SELECT("`status`");
+ sql.SELECT("create_time");
+ sql.SELECT("update_time");
+ sql.SELECT("ext_1");
+ sql.SELECT("ext_2");
+ sql.SELECT("ext_3");
+ sql.FROM("bs_user_card");
+ applyWhere(sql, example, false);
+
+ if (example != null && example.getOrderByClause() != null) {
+ sql.ORDER_BY(example.getOrderByClause());
+ }
+
+ return sql.toString();
+ }
+
+ public String updateByExampleSelective(Map parameter) {
+ BsUserCard record = (BsUserCard) parameter.get("record");
+ BsUserCardExample example = (BsUserCardExample) parameter.get("example");
+
+ SQL sql = new SQL();
+ sql.UPDATE("bs_user_card");
+
+ if (record.getId() != null) {
+ sql.SET("id = #{record.id,jdbcType=BIGINT}");
+ }
+
+ if (record.getUserId() != null) {
+ sql.SET("user_id = #{record.userId,jdbcType=BIGINT}");
+ }
+
+ if (record.getType() != null) {
+ sql.SET("`type` = #{record.type,jdbcType=INTEGER}");
+ }
+
+ if (record.getCardNo() != null) {
+ sql.SET("card_no = #{record.cardNo,jdbcType=VARCHAR}");
+ }
+
+ if (record.getStatus() != null) {
+ sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
+ }
+
+ if (record.getCreateTime() != null) {
+ sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
+ }
+
+ if (record.getUpdateTime() != null) {
+ sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}");
+ }
+
+ if (record.getExt1() != null) {
+ sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
+ }
+
+ if (record.getExt2() != null) {
+ sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
+ }
+
+ if (record.getExt3() != null) {
+ sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
+ }
+
+ applyWhere(sql, example, true);
+ return sql.toString();
+ }
+
+ public String updateByExample(Map parameter) {
+ SQL sql = new SQL();
+ sql.UPDATE("bs_user_card");
+
+ sql.SET("id = #{record.id,jdbcType=BIGINT}");
+ sql.SET("user_id = #{record.userId,jdbcType=BIGINT}");
+ sql.SET("`type` = #{record.type,jdbcType=INTEGER}");
+ sql.SET("card_no = #{record.cardNo,jdbcType=VARCHAR}");
+ sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
+ sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
+ sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}");
+ sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
+ sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
+ sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
+
+ BsUserCardExample example = (BsUserCardExample) parameter.get("example");
+ applyWhere(sql, example, true);
+ return sql.toString();
+ }
+
+ public String updateByPrimaryKeySelective(BsUserCard record) {
+ SQL sql = new SQL();
+ sql.UPDATE("bs_user_card");
+
+ if (record.getUserId() != null) {
+ sql.SET("user_id = #{userId,jdbcType=BIGINT}");
+ }
+
+ if (record.getType() != null) {
+ sql.SET("`type` = #{type,jdbcType=INTEGER}");
+ }
+
+ if (record.getCardNo() != null) {
+ sql.SET("card_no = #{cardNo,jdbcType=VARCHAR}");
+ }
+
+ if (record.getStatus() != null) {
+ sql.SET("`status` = #{status,jdbcType=INTEGER}");
+ }
+
+ if (record.getCreateTime() != null) {
+ sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}");
+ }
+
+ if (record.getUpdateTime() != null) {
+ sql.SET("update_time = #{updateTime,jdbcType=TIMESTAMP}");
+ }
+
+ if (record.getExt1() != null) {
+ sql.SET("ext_1 = #{ext1,jdbcType=VARCHAR}");
+ }
+
+ if (record.getExt2() != null) {
+ sql.SET("ext_2 = #{ext2,jdbcType=VARCHAR}");
+ }
+
+ if (record.getExt3() != null) {
+ sql.SET("ext_3 = #{ext3,jdbcType=VARCHAR}");
+ }
+
+ sql.WHERE("id = #{id,jdbcType=BIGINT}");
+
+ return sql.toString();
+ }
+
+ protected void applyWhere(SQL sql, BsUserCardExample example, boolean includeExamplePhrase) {
+ if (example == null) {
+ return;
+ }
+
+ String parmPhrase1;
+ String parmPhrase1_th;
+ String parmPhrase2;
+ String parmPhrase2_th;
+ String parmPhrase3;
+ String parmPhrase3_th;
+ if (includeExamplePhrase) {
+ parmPhrase1 = "%s #{example.oredCriteria[%d].allCriteria[%d].value}";
+ parmPhrase1_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";
+ parmPhrase2 = "%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}";
+ parmPhrase2_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";
+ parmPhrase3 = "#{example.oredCriteria[%d].allCriteria[%d].value[%d]}";
+ parmPhrase3_th = "#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";
+ } else {
+ parmPhrase1 = "%s #{oredCriteria[%d].allCriteria[%d].value}";
+ parmPhrase1_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";
+ parmPhrase2 = "%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}";
+ parmPhrase2_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";
+ parmPhrase3 = "#{oredCriteria[%d].allCriteria[%d].value[%d]}";
+ parmPhrase3_th = "#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";
+ }
+
+ StringBuilder sb = new StringBuilder();
+ List oredCriteria = example.getOredCriteria();
+ boolean firstCriteria = true;
+ for (int i = 0; i < oredCriteria.size(); i++) {
+ Criteria criteria = oredCriteria.get(i);
+ if (criteria.isValid()) {
+ if (firstCriteria) {
+ firstCriteria = false;
+ } else {
+ sb.append(" or ");
+ }
+
+ sb.append('(');
+ List criterions = criteria.getAllCriteria();
+ boolean firstCriterion = true;
+ for (int j = 0; j < criterions.size(); j++) {
+ Criterion criterion = criterions.get(j);
+ if (firstCriterion) {
+ firstCriterion = false;
+ } else {
+ sb.append(" and ");
+ }
+
+ if (criterion.isNoValue()) {
+ sb.append(criterion.getCondition());
+ } else if (criterion.isSingleValue()) {
+ if (criterion.getTypeHandler() == null) {
+ sb.append(String.format(parmPhrase1, criterion.getCondition(), i, j));
+ } else {
+ sb.append(String.format(parmPhrase1_th, criterion.getCondition(), i, j,criterion.getTypeHandler()));
+ }
+ } else if (criterion.isBetweenValue()) {
+ if (criterion.getTypeHandler() == null) {
+ sb.append(String.format(parmPhrase2, criterion.getCondition(), i, j, i, j));
+ } else {
+ sb.append(String.format(parmPhrase2_th, criterion.getCondition(), i, j, criterion.getTypeHandler(), i, j, criterion.getTypeHandler()));
+ }
+ } else if (criterion.isListValue()) {
+ sb.append(criterion.getCondition());
+ sb.append(" (");
+ List> listItems = (List>) criterion.getValue();
+ boolean comma = false;
+ for (int k = 0; k < listItems.size(); k++) {
+ if (comma) {
+ sb.append(", ");
+ } else {
+ comma = true;
+ }
+ if (criterion.getTypeHandler() == null) {
+ sb.append(String.format(parmPhrase3, i, j, k));
+ } else {
+ sb.append(String.format(parmPhrase3_th, i, j, k, criterion.getTypeHandler()));
+ }
+ }
+ sb.append(')');
+ }
+ }
+ sb.append(')');
+ }
+ }
+
+ if (sb.length() > 0) {
+ sql.WHERE(sb.toString());
+ }
+ }
+}
\ No newline at end of file
diff --git a/service/src/main/java/com/hfkj/entity/BsUserCard.java b/service/src/main/java/com/hfkj/entity/BsUserCard.java
new file mode 100644
index 0000000..27d9f66
--- /dev/null
+++ b/service/src/main/java/com/hfkj/entity/BsUserCard.java
@@ -0,0 +1,200 @@
+package com.hfkj.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * bs_user_card
+ * @author
+ */
+/**
+ *
+ * 代码由工具生成
+ *
+ **/
+public class BsUserCard implements Serializable {
+ /**
+ * 主键
+ */
+ private Long id;
+
+ /**
+ * 用户id
+ */
+ private Long userId;
+
+ /**
+ * 类型 1:贵州汇联通工会卡
+ */
+ private Integer type;
+
+ /**
+ * 卡号
+ */
+ private String cardNo;
+
+ /**
+ * 状态 1:正常 2:冻结
+ */
+ private Integer status;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ /**
+ * 修改时间
+ */
+ private Date updateTime;
+
+ private String ext1;
+
+ private String ext2;
+
+ private String ext3;
+
+ private static final long serialVersionUID = 1L;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Long userId) {
+ this.userId = userId;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getCardNo() {
+ return cardNo;
+ }
+
+ public void setCardNo(String cardNo) {
+ this.cardNo = cardNo;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Date getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ public String getExt1() {
+ return ext1;
+ }
+
+ public void setExt1(String ext1) {
+ this.ext1 = ext1;
+ }
+
+ public String getExt2() {
+ return ext2;
+ }
+
+ public void setExt2(String ext2) {
+ this.ext2 = ext2;
+ }
+
+ public String getExt3() {
+ return ext3;
+ }
+
+ public void setExt3(String ext3) {
+ this.ext3 = ext3;
+ }
+
+ @Override
+ public boolean equals(Object that) {
+ if (this == that) {
+ return true;
+ }
+ if (that == null) {
+ return false;
+ }
+ if (getClass() != that.getClass()) {
+ return false;
+ }
+ BsUserCard other = (BsUserCard) that;
+ return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+ && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
+ && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
+ && (this.getCardNo() == null ? other.getCardNo() == null : this.getCardNo().equals(other.getCardNo()))
+ && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+ && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
+ && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
+ && (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1()))
+ && (this.getExt2() == null ? other.getExt2() == null : this.getExt2().equals(other.getExt2()))
+ && (this.getExt3() == null ? other.getExt3() == null : this.getExt3().equals(other.getExt3()));
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+ result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
+ result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
+ result = prime * result + ((getCardNo() == null) ? 0 : getCardNo().hashCode());
+ result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+ result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
+ result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
+ result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode());
+ result = prime * result + ((getExt2() == null) ? 0 : getExt2().hashCode());
+ result = prime * result + ((getExt3() == null) ? 0 : getExt3().hashCode());
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getClass().getSimpleName());
+ sb.append(" [");
+ sb.append("Hash = ").append(hashCode());
+ sb.append(", id=").append(id);
+ sb.append(", userId=").append(userId);
+ sb.append(", type=").append(type);
+ sb.append(", cardNo=").append(cardNo);
+ sb.append(", status=").append(status);
+ sb.append(", createTime=").append(createTime);
+ sb.append(", updateTime=").append(updateTime);
+ sb.append(", ext1=").append(ext1);
+ sb.append(", ext2=").append(ext2);
+ sb.append(", ext3=").append(ext3);
+ sb.append(", serialVersionUID=").append(serialVersionUID);
+ sb.append("]");
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/service/src/main/java/com/hfkj/entity/BsUserCardExample.java b/service/src/main/java/com/hfkj/entity/BsUserCardExample.java
new file mode 100644
index 0000000..0bd8759
--- /dev/null
+++ b/service/src/main/java/com/hfkj/entity/BsUserCardExample.java
@@ -0,0 +1,863 @@
+package com.hfkj.entity;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class BsUserCardExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List oredCriteria;
+
+ private Integer limit;
+
+ private Long offset;
+
+ public BsUserCardExample() {
+ oredCriteria = new ArrayList();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ }
+
+ public void setLimit(Integer limit) {
+ this.limit = limit;
+ }
+
+ public Integer getLimit() {
+ return limit;
+ }
+
+ public void setOffset(Long offset) {
+ this.offset = offset;
+ }
+
+ public Long getOffset() {
+ return offset;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List getAllCriteria() {
+ return criteria;
+ }
+
+ public List getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(Long value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(Long value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(Long value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(Long value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(Long value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(Long value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(Long value1, Long value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(Long value1, Long value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdIsNull() {
+ addCriterion("user_id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdIsNotNull() {
+ addCriterion("user_id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdEqualTo(Long value) {
+ addCriterion("user_id =", value, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdNotEqualTo(Long value) {
+ addCriterion("user_id <>", value, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdGreaterThan(Long value) {
+ addCriterion("user_id >", value, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdGreaterThanOrEqualTo(Long value) {
+ addCriterion("user_id >=", value, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdLessThan(Long value) {
+ addCriterion("user_id <", value, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdLessThanOrEqualTo(Long value) {
+ addCriterion("user_id <=", value, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdIn(List values) {
+ addCriterion("user_id in", values, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdNotIn(List values) {
+ addCriterion("user_id not in", values, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdBetween(Long value1, Long value2) {
+ addCriterion("user_id between", value1, value2, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUserIdNotBetween(Long value1, Long value2) {
+ addCriterion("user_id not between", value1, value2, "userId");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNull() {
+ addCriterion("`type` is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNotNull() {
+ addCriterion("`type` is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeEqualTo(Integer value) {
+ addCriterion("`type` =", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotEqualTo(Integer value) {
+ addCriterion("`type` <>", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThan(Integer value) {
+ addCriterion("`type` >", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("`type` >=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThan(Integer value) {
+ addCriterion("`type` <", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThanOrEqualTo(Integer value) {
+ addCriterion("`type` <=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIn(List values) {
+ addCriterion("`type` in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotIn(List values) {
+ addCriterion("`type` not in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeBetween(Integer value1, Integer value2) {
+ addCriterion("`type` between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("`type` not between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoIsNull() {
+ addCriterion("card_no is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoIsNotNull() {
+ addCriterion("card_no is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoEqualTo(String value) {
+ addCriterion("card_no =", value, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoNotEqualTo(String value) {
+ addCriterion("card_no <>", value, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoGreaterThan(String value) {
+ addCriterion("card_no >", value, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoGreaterThanOrEqualTo(String value) {
+ addCriterion("card_no >=", value, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoLessThan(String value) {
+ addCriterion("card_no <", value, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoLessThanOrEqualTo(String value) {
+ addCriterion("card_no <=", value, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoLike(String value) {
+ addCriterion("card_no like", value, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoNotLike(String value) {
+ addCriterion("card_no not like", value, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoIn(List values) {
+ addCriterion("card_no in", values, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoNotIn(List values) {
+ addCriterion("card_no not in", values, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoBetween(String value1, String value2) {
+ addCriterion("card_no between", value1, value2, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andCardNoNotBetween(String value1, String value2) {
+ addCriterion("card_no not between", value1, value2, "cardNo");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("`status` is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("`status` is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("`status` =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("`status` <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("`status` >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("`status` >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("`status` <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("`status` <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List values) {
+ addCriterion("`status` in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List values) {
+ addCriterion("`status` not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("`status` between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("`status` not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeIsNull() {
+ addCriterion("create_time is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeIsNotNull() {
+ addCriterion("create_time is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeEqualTo(Date value) {
+ addCriterion("create_time =", value, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeNotEqualTo(Date value) {
+ addCriterion("create_time <>", value, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeGreaterThan(Date value) {
+ addCriterion("create_time >", value, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("create_time >=", value, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeLessThan(Date value) {
+ addCriterion("create_time <", value, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+ addCriterion("create_time <=", value, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeIn(List values) {
+ addCriterion("create_time in", values, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeNotIn(List values) {
+ addCriterion("create_time not in", values, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeBetween(Date value1, Date value2) {
+ addCriterion("create_time between", value1, value2, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+ addCriterion("create_time not between", value1, value2, "createTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeIsNull() {
+ addCriterion("update_time is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeIsNotNull() {
+ addCriterion("update_time is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeEqualTo(Date value) {
+ addCriterion("update_time =", value, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeNotEqualTo(Date value) {
+ addCriterion("update_time <>", value, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeGreaterThan(Date value) {
+ addCriterion("update_time >", value, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("update_time >=", value, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeLessThan(Date value) {
+ addCriterion("update_time <", value, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+ addCriterion("update_time <=", value, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeIn(List values) {
+ addCriterion("update_time in", values, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeNotIn(List values) {
+ addCriterion("update_time not in", values, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+ addCriterion("update_time between", value1, value2, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+ addCriterion("update_time not between", value1, value2, "updateTime");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1IsNull() {
+ addCriterion("ext_1 is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1IsNotNull() {
+ addCriterion("ext_1 is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1EqualTo(String value) {
+ addCriterion("ext_1 =", value, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1NotEqualTo(String value) {
+ addCriterion("ext_1 <>", value, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1GreaterThan(String value) {
+ addCriterion("ext_1 >", value, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1GreaterThanOrEqualTo(String value) {
+ addCriterion("ext_1 >=", value, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1LessThan(String value) {
+ addCriterion("ext_1 <", value, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1LessThanOrEqualTo(String value) {
+ addCriterion("ext_1 <=", value, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1Like(String value) {
+ addCriterion("ext_1 like", value, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1NotLike(String value) {
+ addCriterion("ext_1 not like", value, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1In(List values) {
+ addCriterion("ext_1 in", values, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1NotIn(List values) {
+ addCriterion("ext_1 not in", values, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1Between(String value1, String value2) {
+ addCriterion("ext_1 between", value1, value2, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt1NotBetween(String value1, String value2) {
+ addCriterion("ext_1 not between", value1, value2, "ext1");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2IsNull() {
+ addCriterion("ext_2 is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2IsNotNull() {
+ addCriterion("ext_2 is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2EqualTo(String value) {
+ addCriterion("ext_2 =", value, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2NotEqualTo(String value) {
+ addCriterion("ext_2 <>", value, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2GreaterThan(String value) {
+ addCriterion("ext_2 >", value, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2GreaterThanOrEqualTo(String value) {
+ addCriterion("ext_2 >=", value, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2LessThan(String value) {
+ addCriterion("ext_2 <", value, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2LessThanOrEqualTo(String value) {
+ addCriterion("ext_2 <=", value, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2Like(String value) {
+ addCriterion("ext_2 like", value, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2NotLike(String value) {
+ addCriterion("ext_2 not like", value, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2In(List values) {
+ addCriterion("ext_2 in", values, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2NotIn(List values) {
+ addCriterion("ext_2 not in", values, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2Between(String value1, String value2) {
+ addCriterion("ext_2 between", value1, value2, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt2NotBetween(String value1, String value2) {
+ addCriterion("ext_2 not between", value1, value2, "ext2");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3IsNull() {
+ addCriterion("ext_3 is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3IsNotNull() {
+ addCriterion("ext_3 is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3EqualTo(String value) {
+ addCriterion("ext_3 =", value, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3NotEqualTo(String value) {
+ addCriterion("ext_3 <>", value, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3GreaterThan(String value) {
+ addCriterion("ext_3 >", value, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3GreaterThanOrEqualTo(String value) {
+ addCriterion("ext_3 >=", value, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3LessThan(String value) {
+ addCriterion("ext_3 <", value, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3LessThanOrEqualTo(String value) {
+ addCriterion("ext_3 <=", value, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3Like(String value) {
+ addCriterion("ext_3 like", value, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3NotLike(String value) {
+ addCriterion("ext_3 not like", value, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3In(List values) {
+ addCriterion("ext_3 in", values, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3NotIn(List values) {
+ addCriterion("ext_3 not in", values, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3Between(String value1, String value2) {
+ addCriterion("ext_3 between", value1, value2, "ext3");
+ return (Criteria) this;
+ }
+
+ public Criteria andExt3NotBetween(String value1, String value2) {
+ addCriterion("ext_3 not between", value1, value2, "ext3");
+ return (Criteria) this;
+ }
+ }
+
+ /**
+ */
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/service/src/main/java/com/hfkj/service/card/BsUserCardService.java b/service/src/main/java/com/hfkj/service/card/BsUserCardService.java
new file mode 100644
index 0000000..c50fdcc
--- /dev/null
+++ b/service/src/main/java/com/hfkj/service/card/BsUserCardService.java
@@ -0,0 +1,59 @@
+package com.hfkj.service.card;
+
+import com.hfkj.entity.BsUserCard;
+import com.hfkj.sysenum.UserCardStatusEnum;
+import com.hfkj.sysenum.UserCardTypeEnum;
+
+import java.util.List;
+
+/**
+ * @className: BsUserCardService
+ * @author: HuRui
+ * @date: 2024/5/17
+ **/
+public interface BsUserCardService {
+
+ /**
+ * 编辑数据
+ * @param data
+ */
+ void editData(BsUserCard data);
+
+ /**
+ * 查询卡
+ * @param cardNo
+ * @return
+ */
+ BsUserCard getCard(String cardNo);
+
+ /**
+ * 查询卡
+ * @param userId
+ * @param cardNo
+ * @return
+ */
+ BsUserCard getCard(Long userId,String cardNo);
+
+ /**
+ * 查询卡
+ * @param userId
+ * @return
+ */
+ List getCardList(Long userId, UserCardTypeEnum type);
+
+ /**
+ * 绑定卡号
+ * @param type
+ * @param userId
+ * @param cardNo
+ */
+ void bindCard(UserCardTypeEnum type,Long userId,String cardNo);
+
+ /**
+ * 解绑
+ * @param userId
+ * @param cardNo
+ */
+ void unbindCard(Long userId,String cardNo);
+
+}
diff --git a/service/src/main/java/com/hfkj/service/card/impl/BsUserCardServiceImpl.java b/service/src/main/java/com/hfkj/service/card/impl/BsUserCardServiceImpl.java
new file mode 100644
index 0000000..505e6d1
--- /dev/null
+++ b/service/src/main/java/com/hfkj/service/card/impl/BsUserCardServiceImpl.java
@@ -0,0 +1,110 @@
+package com.hfkj.service.card.impl;
+
+import com.hfkj.common.exception.ErrorCode;
+import com.hfkj.common.exception.ErrorHelp;
+import com.hfkj.common.exception.SysCode;
+import com.hfkj.dao.BsUserCardMapper;
+import com.hfkj.entity.BsUserCard;
+import com.hfkj.entity.BsUserCardExample;
+import com.hfkj.service.card.BsUserCardService;
+import com.hfkj.sysenum.UserCardStatusEnum;
+import com.hfkj.sysenum.UserCardTypeEnum;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @className: BsUserCardServiceImpl
+ * @author: HuRui
+ * @date: 2024/5/17
+ **/
+@Service("userCardService")
+public class BsUserCardServiceImpl implements BsUserCardService {
+ @Resource
+ private BsUserCardMapper userCardMapper;
+
+ @Override
+ public void editData(BsUserCard data) {
+ data.setUpdateTime(new Date());
+ if (data.getId() == null) {
+ data.setCreateTime(new Date());
+ userCardMapper.insert(data);
+ } else {
+ userCardMapper.updateByPrimaryKeySelective(data);
+ }
+ }
+
+ @Override
+ public BsUserCard getCard(String cardNo) {
+ BsUserCardExample example = new BsUserCardExample();
+ example.createCriteria().andCardNoEqualTo(cardNo).andStatusNotEqualTo(UserCardStatusEnum.status0.getCode());
+ List list = userCardMapper.selectByExample(example);
+ if (!list.isEmpty()) {
+ return list.get(0);
+ }
+ return null;
+ }
+
+ @Override
+ public BsUserCard getCard(Long userId, String cardNo) {
+ BsUserCardExample example = new BsUserCardExample();
+ example.createCriteria()
+ .andUserIdEqualTo(userId)
+ .andCardNoEqualTo(cardNo)
+ .andStatusNotEqualTo(UserCardStatusEnum.status0.getCode());
+ List list = userCardMapper.selectByExample(example);
+ if (!list.isEmpty()) {
+ return list.get(0);
+ }
+ return null;
+ }
+
+ @Override
+ public List getCardList(Long userId, UserCardTypeEnum type) {
+ BsUserCardExample example = new BsUserCardExample();
+ BsUserCardExample.Criteria criteria = example.createCriteria()
+ .andUserIdEqualTo(userId)
+ .andStatusNotEqualTo(UserCardStatusEnum.status0.getCode());
+ if (type != null) {
+ criteria.andTypeEqualTo(type.getCode());
+ }
+ example.setOrderByClause("create_time desc");
+ return userCardMapper.selectByExample(example);
+ }
+
+ @Override
+ public void bindCard(UserCardTypeEnum type, Long userId, String cardNo) {
+ if (UserCardTypeEnum.type1.getCode() == type.getCode()) {
+ if (!getCardList(userId, type).isEmpty()) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "账户已绑定工会卡,请勿重复绑定!");
+ }
+ }
+ if (getCard(cardNo) != null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前卡号已被账户绑定,请勿重复绑定!");
+ }
+ BsUserCard card = new BsUserCard();
+ card.setUserId(userId);
+ card.setType(type.getCode());
+ card.setCardNo(cardNo);
+ card.setStatus(UserCardStatusEnum.status1.getCode());
+ editData(card);
+ }
+
+ @Override
+ public void unbindCard(Long userId, String cardNo) {
+ // 查询卡号
+ BsUserCard card = getCard(cardNo);
+ if (card == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前卡号已被账户绑定,请勿重复绑定!");
+ }
+ if (card.getUserId().equals(userId)) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "账户不一致");
+ }
+ card.setStatus(UserCardStatusEnum.status0.getCode());
+ editData(card);
+ }
+
+
+}
diff --git a/service/src/main/java/com/hfkj/service/order/OrderPayService.java b/service/src/main/java/com/hfkj/service/order/OrderPayService.java
new file mode 100644
index 0000000..6376441
--- /dev/null
+++ b/service/src/main/java/com/hfkj/service/order/OrderPayService.java
@@ -0,0 +1,21 @@
+package com.hfkj.service.order;
+
+import com.hfkj.entity.BsUserCard;
+import com.hfkj.model.order.OrderModel;
+
+/**
+ * @className: OrderPayService
+ * @author: HuRui
+ * @date: 2024/5/17
+ **/
+public interface OrderPayService {
+
+ /**
+ * 贵州汇联通工会卡支付
+ * @param order
+ * @param userCard
+ * @return
+ * @throws Exception
+ */
+ OrderModel hltCardPay(OrderModel order, BsUserCard userCard) throws Exception;
+}
diff --git a/service/src/main/java/com/hfkj/service/order/impl/OrderPayServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/OrderPayServiceImpl.java
new file mode 100644
index 0000000..0fdb2f9
--- /dev/null
+++ b/service/src/main/java/com/hfkj/service/order/impl/OrderPayServiceImpl.java
@@ -0,0 +1,79 @@
+package com.hfkj.service.order.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hfkj.common.exception.ErrorCode;
+import com.hfkj.common.exception.ErrorHelp;
+import com.hfkj.common.exception.SysCode;
+import com.hfkj.entity.BsUserCard;
+import com.hfkj.model.order.OrderChildModel;
+import com.hfkj.model.order.OrderModel;
+import com.hfkj.service.hlt.HuiLianTongUnionCardService;
+import com.hfkj.service.order.BsOrderService;
+import com.hfkj.service.order.OrderPayService;
+import com.hfkj.service.order.OrderPaySuccessService;
+import com.hfkj.sysenum.order.OrderPayChannelEnum;
+import com.hfkj.sysenum.order.OrderPayTypeEnum;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * @className: OrderPayServiceImpl
+ * @author: HuRui
+ * @date: 2024/5/17
+ **/
+@Service("orderPayService")
+public class OrderPayServiceImpl implements OrderPayService {
+ @Resource
+ private BsOrderService orderService;
+
+ @Override
+ public OrderModel hltCardPay(OrderModel order, BsUserCard userCard) throws Exception {
+ String goodsDesc = "";
+ String tranDesc = "";
+ String instCode = "11101527";
+ String businessType = "hisen_consume";
+
+ for (OrderChildModel orderChild : order.getOrderChildList()) {
+ if (StringUtils.isBlank(tranDesc)) {
+ tranDesc = tranDesc + orderChild.getProductName();
+ } else {
+ tranDesc = tranDesc +","+ orderChild.getProductName();
+ }
+ }
+ // 描述超过30字符,截取加省略号
+ if (tranDesc.length()>30) {
+ tranDesc = tranDesc.substring(1,30) + "...";
+ }
+
+ /* if (order.getProductType().equals(OrderProductType.PRODUCT_TYPE5.getNumber())) {
+ instCode = "11101654";
+ businessType = "sinopec_oil_code";
+ goodsDesc = "购买加油券";
+ tranDesc = order.getHighChildOrderList().get(0).getGoodsName();
+
+ } else {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂时无法支付,请使用其他支付方式");
+ }*/
+
+ // 工会卡支付
+ JSONObject consumption = HuiLianTongUnionCardService.consumption(order.getOrderNo(), userCard.getCardNo(), order.getPayRealPrice(), businessType, instCode, goodsDesc, tranDesc);
+ if (!consumption.getString("respCode").equals("0000")) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, consumption.getString("respMessage"));
+ }
+ // 响应参数
+ JSONObject consumptionResult = HuiLianTongUnionCardService.resolveResponse(consumption.getString("data"));
+ if (consumptionResult.getBoolean("success") != true) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, consumptionResult.getString("message"));
+ }
+
+ order.setPayChannel(OrderPayChannelEnum.type4.getCode());
+ order.setPayType(OrderPayTypeEnum.type4.getCode());
+ order.setPaySerialNo(consumptionResult.getString("orderId"));
+ // 处理订单业务
+ orderService.orderPaySuccessHandle(order);
+ return order;
+ }
+}
diff --git a/service/src/main/java/com/hfkj/sysenum/UserCardStatusEnum.java b/service/src/main/java/com/hfkj/sysenum/UserCardStatusEnum.java
new file mode 100644
index 0000000..1478330
--- /dev/null
+++ b/service/src/main/java/com/hfkj/sysenum/UserCardStatusEnum.java
@@ -0,0 +1,39 @@
+package com.hfkj.sysenum;
+
+import lombok.Getter;
+
+/**
+ * @className: UserCardTypeEnum
+ * @author: HuRui
+ * @date: 2024/5/17
+ **/
+@Getter
+public enum UserCardStatusEnum {
+
+ /**
+ * 不可用
+ */
+ status0(0, "不可用"),
+
+ /**
+ * 正常
+ */
+ status1(1, "正常"),
+
+ /**
+ * 冻结
+ */
+ status2(2, "冻结"),
+ ;
+
+ private int code;
+
+ private String name;
+
+
+ UserCardStatusEnum(int code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+}
diff --git a/service/src/main/java/com/hfkj/sysenum/UserCardTypeEnum.java b/service/src/main/java/com/hfkj/sysenum/UserCardTypeEnum.java
new file mode 100644
index 0000000..3d892ab
--- /dev/null
+++ b/service/src/main/java/com/hfkj/sysenum/UserCardTypeEnum.java
@@ -0,0 +1,39 @@
+package com.hfkj.sysenum;
+
+import com.hfkj.sysenum.order.OrderAfterSalesApplyTypeEnum;
+import lombok.Getter;
+
+import java.util.Objects;
+
+/**
+ * @className: UserCardTypeEnum
+ * @author: HuRui
+ * @date: 2024/5/17
+ **/
+@Getter
+public enum UserCardTypeEnum {
+
+ /**
+ * 贵州汇联通工会卡
+ */
+ type1(1, "贵州汇联通工会卡"),
+ ;
+
+ private int code;
+
+ private String name;
+
+
+ UserCardTypeEnum(int code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+ public static UserCardTypeEnum getData(Integer type) {
+ for (UserCardTypeEnum ele : values()) {
+ if(Objects.equals(type,ele.getCode())) return ele;
+ }
+ return null;
+ }
+
+}
diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderPayChannelEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderPayChannelEnum.java
index 033e2f0..d69b487 100644
--- a/service/src/main/java/com/hfkj/sysenum/order/OrderPayChannelEnum.java
+++ b/service/src/main/java/com/hfkj/sysenum/order/OrderPayChannelEnum.java
@@ -22,6 +22,10 @@ public enum OrderPayChannelEnum {
* 贵州银行
*/
type3(3, "贵州银行"),
+ /**
+ * 汇联通
+ */
+ type4(4, "汇联通"),
;
private final int code;
diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderPayTypeEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderPayTypeEnum.java
index d6c8b29..0c5b674 100644
--- a/service/src/main/java/com/hfkj/sysenum/order/OrderPayTypeEnum.java
+++ b/service/src/main/java/com/hfkj/sysenum/order/OrderPayTypeEnum.java
@@ -22,6 +22,10 @@ public enum OrderPayTypeEnum {
* 快捷支付
*/
type3(3, "快捷支付"),
+ /**
+ * 工会卡
+ */
+ type4(4, "工会卡"),
;
private final int code;
diff --git a/user/src/main/java/com/user/controller/SmsController.java b/user/src/main/java/com/user/controller/SmsController.java
index b37d107..ea74f9c 100644
--- a/user/src/main/java/com/user/controller/SmsController.java
+++ b/user/src/main/java/com/user/controller/SmsController.java
@@ -1 +1 @@
-package com.user.controller;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.MemberValidateUtil;
import com.hfkj.common.utils.RedisUtil;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.config.MessageConfig;
import com.hfkj.model.ResponseData;
import com.hfkj.service.user.BsUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.Random;
/**
* @Auther: 胡锐
* @Description:
* @Date: 2021/3/26 23:08
*/
@Controller
@RequestMapping(value = "/sms")
@Api(value = "短信服务")
public class SmsController {
private static Logger log = LoggerFactory.getLogger(SmsController.class);
@Resource
private RedisUtil redisUtil;
@Resource
private BsUserService userService;
@RequestMapping(value = "/sendLoginSMSCode", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取登录验证码")
public ResponseData sendLoginSMSCode(@RequestBody JSONObject body) {
try {
if (body == null || StringUtils.isBlank(body.getString("phone"))) {
log.error("LoginController --> phone() error!", "请求参数校验失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
String phone = body.getString("phone");
// 校验手机号格式
if (MemberValidateUtil.validatePhone(phone) == false) {
log.error("LoginController --> phone() error!", "请输入正确的手机号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号");
}
// 生成随机6位验证码
String smsCode = String.valueOf(new Random().nextInt(899999) + 100000);
MessageConfig.req(phone,smsCode, MessageConfig.HWMSG_ID5);
// 验证码缓存5分钟
redisUtil.set("SMS_CODE:"+phone, smsCode, 60*5);
return ResponseMsgUtil.success("短信发送成功");
} catch (Exception e) {
log.error("SMSController --> getLoginSMSCode() error!", e);
return ResponseMsgUtil.exception(e);
}
}
}
\ No newline at end of file
+package com.user.controller;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.MemberValidateUtil;
import com.hfkj.common.utils.RedisUtil;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.config.MessageConfig;
import com.hfkj.model.ResponseData;
import com.hfkj.service.user.BsUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.Random;
/**
* @Auther: 胡锐
* @Description:
* @Date: 2021/3/26 23:08
*/
@Controller
@RequestMapping(value = "/sms")
@Api(value = "短信服务")
public class SmsController {
private static Logger log = LoggerFactory.getLogger(SmsController.class);
@Resource
private RedisUtil redisUtil;
@RequestMapping(value = "/sendLoginSMSCode", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取登录验证码")
public ResponseData sendLoginSMSCode(@RequestBody JSONObject body) {
try {
if (body == null || StringUtils.isBlank(body.getString("phone"))) {
log.error("LoginController --> phone() error!", "请求参数校验失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
String phone = body.getString("phone");
// 校验手机号格式
if (MemberValidateUtil.validatePhone(phone) == false) {
log.error("LoginController --> phone() error!", "请输入正确的手机号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号");
}
// 生成随机6位验证码
String smsCode = String.valueOf(new Random().nextInt(899999) + 100000);
MessageConfig.req(phone,smsCode, MessageConfig.HWMSG_ID5);
// 验证码缓存5分钟
redisUtil.set("SMS_CODE:"+phone, smsCode, 60*5);
return ResponseMsgUtil.success("短信发送成功");
} catch (Exception e) {
log.error("SMSController --> getLoginSMSCode() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/sendBindCardSMSCode", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取绑定卡片验证码")
public ResponseData sendBindCardSMSCode(@RequestBody JSONObject body) {
try {
if (body == null || StringUtils.isBlank(body.getString("phone"))) {
log.error("LoginController --> phone() error!", "请求参数校验失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
String phone = body.getString("phone");
// 校验手机号格式
if (MemberValidateUtil.validatePhone(phone) == false) {
log.error("LoginController --> phone() error!", "请输入正确的手机号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号");
}
// 生成随机6位验证码
String smsCode = String.valueOf(new Random().nextInt(899999) + 100000);
MessageConfig.req(phone,smsCode, MessageConfig.HWMSG_ID7);
// 验证码缓存5分钟
redisUtil.set("SMS_CODE:"+phone, smsCode, 60*5);
return ResponseMsgUtil.success("短信发送成功");
} catch (Exception e) {
log.error("SMSController --> getLoginSMSCode() error!", e);
return ResponseMsgUtil.exception(e);
}
}
}
\ No newline at end of file
diff --git a/user/src/main/java/com/user/controller/UserCardController.java b/user/src/main/java/com/user/controller/UserCardController.java
new file mode 100644
index 0000000..c83c85a
--- /dev/null
+++ b/user/src/main/java/com/user/controller/UserCardController.java
@@ -0,0 +1,190 @@
+package com.user.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hfkj.common.exception.ErrorCode;
+import com.hfkj.common.exception.ErrorHelp;
+import com.hfkj.common.exception.SysCode;
+import com.hfkj.common.security.SessionObject;
+import com.hfkj.common.security.UserCenter;
+import com.hfkj.common.utils.RedisUtil;
+import com.hfkj.common.utils.ResponseMsgUtil;
+import com.hfkj.entity.BsUserCard;
+import com.hfkj.model.ResponseData;
+import com.hfkj.model.UserSessionObject;
+import com.hfkj.service.card.BsUserCardService;
+import com.hfkj.service.hlt.HuiLianTongUnionCardService;
+import com.hfkj.sysenum.UserCardTypeEnum;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @className: UserCardController
+ * @author: HuRui
+ * @date: 2024/5/17
+ **/
+@Controller
+@RequestMapping(value="/userCard")
+@Api(value="用户卡包")
+public class UserCardController {
+ Logger log = LoggerFactory.getLogger(UserCardController.class);
+ @Resource
+ private BsUserCardService userCardService;
+ @Resource
+ private RedisUtil redisUtil;
+ @Resource
+ private UserCenter userCenter;
+
+ @RequestMapping(value="/bind",method = RequestMethod.POST)
+ @ResponseBody
+ @ApiOperation(value = "绑定")
+ public ResponseData bind(@RequestBody JSONObject body) {
+ try {
+ // 用户
+ UserSessionObject userSessionObject = userCenter.getSessionModel(UserSessionObject.class);
+ if (userSessionObject == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, "");
+ }
+ if (body == null
+ || body.getInteger("type") == null
+ || StringUtils.isBlank(body.getString("cardNo"))) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
+ }
+
+ // 卡类型
+ UserCardTypeEnum typeEnum = UserCardTypeEnum.getData(body.getInteger("type"));
+ if (typeEnum == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的类型");
+ }
+ userCardService.bindCard(
+ typeEnum,
+ userSessionObject.getUser().getId(),
+ body.getString("cardNo"));
+
+ return ResponseMsgUtil.success("操作成功");
+
+ } catch (Exception e) {
+ log.error("error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
+ @RequestMapping(value="/unBind",method = RequestMethod.POST)
+ @ResponseBody
+ @ApiOperation(value = "解绑")
+ public ResponseData unBind(@RequestBody JSONObject body) {
+ try {
+ // 用户
+ UserSessionObject userSessionObject = userCenter.getSessionModel(UserSessionObject.class);
+ if (userSessionObject == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, "");
+ }
+ if (body == null || StringUtils.isBlank(body.getString("cardNo"))) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
+ }
+
+ userCardService.unbindCard(userSessionObject.getUser().getId(),body.getString("cardNo"));
+
+ return ResponseMsgUtil.success("操作成功");
+
+ } catch (Exception e) {
+ log.error("error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
+ @RequestMapping(value="/queryHltCard",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "查询汇联通卡")
+ public ResponseData queryHltCard(@RequestParam(value = "phone" , required = true) String phone,
+ @RequestParam(value = "smsCode" , required = true) String smsCode) {
+ try {
+ // 手机号的验证码
+ Object phoneCodeObject = redisUtil.get("SMS_CODE:" + phone);
+ if (phoneCodeObject == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "短信验证码错误");
+ }
+ if (smsCode.equals(phoneCodeObject.toString())) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "短信验证码错误");
+ }
+
+ // 请求汇联通
+ JSONObject responseObj = HuiLianTongUnionCardService.queryCardByMobile(phone);
+ if(responseObj.getString("respCode").equals("0000") && responseObj.getString("respMessage").equals("ok")) {
+ // 解密
+ JSONObject dataObject = HuiLianTongUnionCardService.resolveResponse(responseObj.getString("data"));
+ // 删除验证码
+ redisUtil.del("SMS_CODE:" + phone);
+
+ return ResponseMsgUtil.success(dataObject.getJSONArray("cards"));
+ } else {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询失败!请稍候重试");
+ }
+
+ } catch (Exception e) {
+ log.error("error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
+ @RequestMapping(value = "/queryHltBalance", method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "查询汇联通工会卡余额")
+ public ResponseData queryHltBalance() {
+ try {
+ // 用户
+ UserSessionObject sessionObject = userCenter.getSessionModel(UserSessionObject.class);
+ if (sessionObject == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, "");
+ }
+ List cardList = userCardService.getCardList(sessionObject.getUser().getId(), UserCardTypeEnum.type1);
+ if (cardList.isEmpty()) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未绑定工会卡");
+ }
+ JSONObject cardInfo = HuiLianTongUnionCardService.queryBalance(cardList.get(0).getCardNo());
+ if (StringUtils.isBlank(cardInfo.getString("data"))) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请求失败");
+ }
+ return ResponseMsgUtil.success(HuiLianTongUnionCardService.resolveResponse(cardInfo.getString("data")));
+
+ } catch (Exception e) {
+ log.error("HighUserCardController --> getHuiLianTongCardBalance() error!", e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
+ @RequestMapping(value="/queryUserCard",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "查询用户卡号")
+ public ResponseData queryUserCard(@RequestParam(value = "type" , required = false) Integer type) {
+ try {
+ // 用户
+ UserSessionObject userSessionObject = userCenter.getSessionModel(UserSessionObject.class);
+ if (userSessionObject == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, "");
+ }
+ UserCardTypeEnum typeEnum = null;
+ if (type!= null) {
+ typeEnum = UserCardTypeEnum.getData(type);
+ if (typeEnum == null) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的类型");
+ }
+ }
+ return ResponseMsgUtil.success(userCardService.getCardList(userSessionObject.getUser().getId(), typeEnum));
+
+ } catch (Exception e) {
+ log.error("error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
+
+}