From 0b1a1f8b949812fe1dfcaf0850056415222bb95f Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Sat, 18 May 2024 13:44:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cweb/controller/OcrController.java | 71 ++ .../order/controller/OrderPayController.java | 49 + service/pom.xml | 5 + .../com/hfkj/common/ocr/AliYunOcrService.java | 97 ++ .../java/com/hfkj/config/MessageConfig.java | 2 + .../java/com/hfkj/dao/BsUserCardMapper.java | 117 +++ .../com/hfkj/dao/BsUserCardMapperExt.java | 7 + .../com/hfkj/dao/BsUserCardSqlProvider.java | 304 ++++++ .../main/java/com/hfkj/entity/BsUserCard.java | 200 ++++ .../com/hfkj/entity/BsUserCardExample.java | 863 ++++++++++++++++++ .../hfkj/service/card/BsUserCardService.java | 59 ++ .../card/impl/BsUserCardServiceImpl.java | 110 +++ .../hfkj/service/order/OrderPayService.java | 21 + .../order/impl/OrderPayServiceImpl.java | 79 ++ .../com/hfkj/sysenum/UserCardStatusEnum.java | 39 + .../com/hfkj/sysenum/UserCardTypeEnum.java | 39 + .../sysenum/order/OrderPayChannelEnum.java | 4 + .../hfkj/sysenum/order/OrderPayTypeEnum.java | 4 + .../com/user/controller/SmsController.java | 2 +- .../user/controller/UserCardController.java | 190 ++++ 20 files changed, 2261 insertions(+), 1 deletion(-) create mode 100644 cweb/src/main/java/com/cweb/controller/OcrController.java create mode 100644 service/src/main/java/com/hfkj/common/ocr/AliYunOcrService.java create mode 100644 service/src/main/java/com/hfkj/dao/BsUserCardMapper.java create mode 100644 service/src/main/java/com/hfkj/dao/BsUserCardMapperExt.java create mode 100644 service/src/main/java/com/hfkj/dao/BsUserCardSqlProvider.java create mode 100644 service/src/main/java/com/hfkj/entity/BsUserCard.java create mode 100644 service/src/main/java/com/hfkj/entity/BsUserCardExample.java create mode 100644 service/src/main/java/com/hfkj/service/card/BsUserCardService.java create mode 100644 service/src/main/java/com/hfkj/service/card/impl/BsUserCardServiceImpl.java create mode 100644 service/src/main/java/com/hfkj/service/order/OrderPayService.java create mode 100644 service/src/main/java/com/hfkj/service/order/impl/OrderPayServiceImpl.java create mode 100644 service/src/main/java/com/hfkj/sysenum/UserCardStatusEnum.java create mode 100644 service/src/main/java/com/hfkj/sysenum/UserCardTypeEnum.java create mode 100644 user/src/main/java/com/user/controller/UserCardController.java 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); + } + } + + +}