From 56593d894ae40670669d8fe4ef6ff6f7bba98d38 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 20 Aug 2019 09:54:23 +0800 Subject: [PATCH] =?UTF-8?q?[POS][=E4=BF=AE=E6=94=B9]:B=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/PosController.java | 34 +++++++++ .../java/com/iformall/service/PosService.java | 6 ++ .../iformall/service/impl/PosServiceImpl.java | 74 +++++++++++++++++++ .../java/com/iformall/pay/WxPayConstant.java | 2 + 4 files changed, 116 insertions(+) diff --git a/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java b/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java index b098ff297..41041c4d9 100644 --- a/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java +++ b/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java @@ -34,6 +34,40 @@ public class PosController extends BaseController { private final ThDevInfoService thDevInfoService; private final WxCouponOrderService couponOrderService; + @ApiOperation(value = "门店用户登录检查", notes = "{" + + "\"dev_id\":\"string(必填)\"," + + "\"nonce_str\":\"string(必填)," + + "\"tenant_id\":\"string(必填)\"," + + "\"phone\":\"string(必填)\"," + + "\"password\":\"string(必填)\"}") + @PostMapping("/checkUserPassword") + @SystemControllerLog(description = "门店用户登录检查") + public Map checkUserPassword(@RequestBody Map params) { + JSONObject payContent = new JSONObject(); + + // 1. check sign + Map retMap = checkSign(params, payContent); + if (retMap != null) { + // 签名相关异常返回 + return retMap; + } + String resKey = payContent.getString("resKey"); + logger.info("resKey: " + resKey); + + try { + retMap = posService.checkUserPassword(params); + return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "", WxPayConstant.RET_SUCCESS, null); + } catch (MallinkException e) { + return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "", WxPayConstant.RET_FAIL, + e.getErrorCode(), + e.getMessage()); + } catch (Exception e) { + return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "", WxPayConstant.RET_FAIL, + 500, + e.getMessage()); + } + } + @ApiOperation(value = "获取会员折扣/优惠券/消费卡是否启用", notes = "{" + "\"dev_id\":\"string(必填)\"," + "\"tenant_id\":\"string(必填)\"," + diff --git a/mallinkPosApi/src/main/java/com/iformall/service/PosService.java b/mallinkPosApi/src/main/java/com/iformall/service/PosService.java index 93009013e..51696d986 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/PosService.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/PosService.java @@ -9,6 +9,12 @@ import java.util.Map; public interface PosService { + /** + * 获取商城会员设置状态 + * @param params + * @return + */ + Map checkUserPassword(Map params) throws MallinkException; /** * 获取商城会员设置状态 * @param params diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index 8868e426c..25b97a193 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -53,6 +53,80 @@ public class PosServiceImpl implements PosService { private final WxCouponMerchantMapper couponMerchantMapper; private final WxCouponMapper couponMapper; + /** + * 门店用户登录检查 + * @param params + * @return + */ + @Override + public Map checkUserPassword(Map params) throws MallinkException { + Map retMap = new HashMap<>(); + + String tenantId = params.get(WxPayConstant.TENANT_ID); // 租户ID + String phone = params.get(WxPayConstant.PHONE); // buUser's Phone + String password = params.get(WxPayConstant.PASSWORD); // buUser's password + + if (StringUtils.isBlank(tenantId)) { + String errMessage = "request params[tenant_id] error."; + logger.error(errMessage); + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + } + if (StringUtils.isBlank(phone)) { + String errMessage = "request params[phone] error."; + logger.error(errMessage); + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + } + if (StringUtils.isBlank(password)) { + String errMessage = "request params[password] error."; + logger.error(errMessage); + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + } + WxMerchantBUser user = new WxMerchantBUser(); + user.setTenantId(tenantId); + user.setPhone(phone); + user.setStatus(EnumMerchantBUserStatus.VALID.getCode()); + WxMerchantBUser user1 = null; + + try { + user1 = merchantBUserService.getBUserByAppId(user); + } catch (Exception e) { + String errMessage = "B端用户不存在或者已被禁用, phone: " + phone + ", " +e.getMessage(); + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), errMessage); + } + if (user1 != null) { + // check merchant 状态 + WxMerchant merchant = null; + try { + merchant = merchantService.getById(user1.getMerchantId()); + } catch (Exception e) { + String errMessage = ErrorCode.DB_FAIL.getMessage() + ": " + user1.getMerchantId() + e.getMessage(); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), errMessage); + } + if (merchant == null) { + logger.error(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage() + ": " + user1.getMerchantId()); + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } + if (merchant.getStatus().equals(EnumMerchantStatus.NOT_VALID.getCode())) { + logger.error(ErrorCode.MERCHANT_INFO_NOT_VALID.getMessage() + ": " + user1.getMerchantId()); + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_VALID); + } + // check password + if (user1.getUserPwd().equalsIgnoreCase(password)) { + retMap.put(WxPayConstant.TENANT_ID, user1.getTenantId()); + retMap.put(WxPayConstant.MERCHANT_ID, String.valueOf(user1.getMerchantId())); + retMap.put(WxPayConstant.BUSER_ID, String.valueOf(user1.getId())); + retMap.put(WxPayConstant.MEM_ID, String.valueOf(user1.getId())); + return retMap; + } else { + logger.error(ErrorCode.PASSWORD_ERROR.getMessage()); + throw new MallinkException(ErrorCode.PASSWORD_ERROR); + } + } else { + String errMessage = "B端用户不存在, phone: " + phone; + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), errMessage); + } + } + /** * 获取商城会员设置状态 * @param params diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java b/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java index c2aba2575..80dc3ed4a 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java @@ -29,6 +29,8 @@ public class WxPayConstant { public final static String MEM_PHONE = "mem_phone"; public final static String CARD_ID = "card_id"; public final static String CARD_SPEND_ID = "card_spend_id"; + public final static String PHONE = "phone"; + public final static String PASSWORD = "password"; public final static String VERIFY_TYPE = "verify_type"; public final static String VERIFY_TYPE_INDEPENT = "independent";