Merge #140 into master from cc_20260513_minor_req
闭店H5新增闭店接口&私域二维码缓存时间延长 * cc_20260513_minor_req: (2 commits squashed) - fix:私域二维码新增SN反向映射关系 - fix:新增pc闭店申请发起接口 Signed-off-by: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com> Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com> CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/140
This commit is contained in:
@@ -424,6 +424,11 @@ public class RedisConstant {
|
|||||||
*/
|
*/
|
||||||
public static final String PRIVATE_STORE_SN_BIND = "private_sphere_store_sn";
|
public static final String PRIVATE_STORE_SN_BIND = "private_sphere_store_sn";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 私域门店id->设备SN
|
||||||
|
*/
|
||||||
|
public static final String PRIVATE_STORE_SN_REVERSE = "private_store_sn_reverse";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 私域设备SN->门店私域二维码地址
|
* 私域设备SN->门店私域二维码地址
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -39,4 +39,9 @@ public class CloseStoreApplyRequest {
|
|||||||
@NotBlank(message = "门店id不能为空")
|
@NotBlank(message = "门店id不能为空")
|
||||||
private String storeId;
|
private String storeId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "用户id", hidden = true)
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "用户名称",hidden = true)
|
||||||
|
private String userName;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,5 +14,9 @@ public class ReCloseStoreApplyRequest {
|
|||||||
@ApiModelProperty("闭店信息ID")
|
@ApiModelProperty("闭店信息ID")
|
||||||
private Long closeStoreId;
|
private Long closeStoreId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "用户id", hidden = true)
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "用户名称",hidden = true)
|
||||||
|
private String userName;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,13 +31,6 @@ public interface CloseStoreService {
|
|||||||
*/
|
*/
|
||||||
Boolean reApplyCloseStore(ReCloseStoreApplyRequest request);
|
Boolean reApplyCloseStore(ReCloseStoreApplyRequest request);
|
||||||
|
|
||||||
/**
|
|
||||||
* 第三方申请闭店
|
|
||||||
* @param request 三方闭店申请Request
|
|
||||||
* @return 是否成功
|
|
||||||
*/
|
|
||||||
Boolean thirdApplyCloseStore(ThirdCloseStoreApplyRequest request);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审批通过
|
* 审批通过
|
||||||
* @param request 闭店申请审批Request
|
* @param request 闭店申请审批Request
|
||||||
|
|||||||
@@ -98,13 +98,8 @@ public class CloseStoreServiceImpl implements CloseStoreService {
|
|||||||
}
|
}
|
||||||
String userId, userName;
|
String userId, userName;
|
||||||
if (CloseTypeEnum.INITIATE.getCloseType().equals(request.getCloseType())) {
|
if (CloseTypeEnum.INITIATE.getCloseType().equals(request.getCloseType())) {
|
||||||
// 主动发起的申请人为加盟商,从C端登录用户信息中获取
|
userId = request.getUserId();
|
||||||
PartnerUserInfoVO user = PartnerUserHolder.getUser();
|
userName = request.getUserName();
|
||||||
userId = user.getPartnerId();
|
|
||||||
userName = user.getUsername();
|
|
||||||
if (StringUtils.isBlank(userName)) {
|
|
||||||
userName = user.getMobile();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
userId = AIEnum.AI_ID.getCode();
|
userId = AIEnum.AI_ID.getCode();
|
||||||
userName = AIEnum.AI_NAME.getCode();
|
userName = AIEnum.AI_NAME.getCode();
|
||||||
@@ -139,21 +134,12 @@ public class CloseStoreServiceImpl implements CloseStoreService {
|
|||||||
.reasonDescription(closeStoreInfoDO.getReasonDescription())
|
.reasonDescription(closeStoreInfoDO.getReasonDescription())
|
||||||
.closeType(closeStoreInfoDO.getCloseType())
|
.closeType(closeStoreInfoDO.getCloseType())
|
||||||
.storeId(closeStoreInfoDO.getStoreId())
|
.storeId(closeStoreInfoDO.getStoreId())
|
||||||
|
.userId(request.getUserId())
|
||||||
|
.userName(request.getUserName())
|
||||||
.build();
|
.build();
|
||||||
return applyCloseStore(applyRequest);
|
return applyCloseStore(applyRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional
|
|
||||||
public Boolean thirdApplyCloseStore(ThirdCloseStoreApplyRequest request) {
|
|
||||||
StoreDO storeDO = storeDao.getByStoreNum(request.getStoreNum());
|
|
||||||
if (Objects.isNull(storeDO)) {
|
|
||||||
throw new ServiceException(ErrorCodeEnum.STORE_NOT_EXIST);
|
|
||||||
}
|
|
||||||
CloseStoreApplyRequest closeRequest = request.convert(storeDO.getStoreId());
|
|
||||||
return applyCloseStore(closeRequest);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public Boolean auditPass(CloseStoreAuditRequest request) {
|
public Boolean auditPass(CloseStoreAuditRequest request) {
|
||||||
|
|||||||
@@ -42,9 +42,13 @@ public class PrivateSphereQrServiceImpl implements PrivateSphereQrService {
|
|||||||
*/
|
*/
|
||||||
private static final int QR_CODE_SIZE = 1280;
|
private static final int QR_CODE_SIZE = 1280;
|
||||||
/**
|
/**
|
||||||
* sn缓存时间
|
* sn和门店绑定关系缓存时间
|
||||||
*/
|
*/
|
||||||
private static final int SN_CACHE_TIME = 86400 * 7;
|
private static final int SN_CACHE_TIME = 86400 * 30;
|
||||||
|
/**
|
||||||
|
* sn二维码缓存时间
|
||||||
|
*/
|
||||||
|
private static final int SN_RQ_LIMIT_TIME = 86400;
|
||||||
/**
|
/**
|
||||||
* IP限制时间(1小时)
|
* IP限制时间(1小时)
|
||||||
*/
|
*/
|
||||||
@@ -66,7 +70,7 @@ public class PrivateSphereQrServiceImpl implements PrivateSphereQrService {
|
|||||||
try {
|
try {
|
||||||
String qrCodeUrl = generateAndUploadQrCode(request.getSn());
|
String qrCodeUrl = generateAndUploadQrCode(request.getSn());
|
||||||
// 存储到Redis
|
// 存储到Redis
|
||||||
redisUtilPool.hashSet(RedisConstant.PRIVATE_SN_QR_CODE, request.getSn(), qrCodeUrl, SN_CACHE_TIME);
|
redisUtilPool.hashSet(RedisConstant.PRIVATE_SN_QR_CODE, request.getSn(), qrCodeUrl, SN_RQ_LIMIT_TIME);
|
||||||
log.info("生成二维码并上传成功,sn: {}, url: {}", request.getSn(), qrCodeUrl);
|
log.info("生成二维码并上传成功,sn: {}, url: {}", request.getSn(), qrCodeUrl);
|
||||||
return new PrivateSphereVO(qrCodeUrl);
|
return new PrivateSphereVO(qrCodeUrl);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -91,7 +95,12 @@ public class PrivateSphereQrServiceImpl implements PrivateSphereQrService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean bindStoreSn(PrivateSphereBindRequest request) {
|
public Boolean bindStoreSn(PrivateSphereBindRequest request) {
|
||||||
|
String oldSn = redisUtilPool.hashGet(RedisConstant.PRIVATE_STORE_SN_REVERSE, request.getStoreId());
|
||||||
|
if (StringUtils.isNotBlank(oldSn)) {
|
||||||
|
redisUtilPool.hashDel(RedisConstant.PRIVATE_STORE_SN_BIND, oldSn);
|
||||||
|
}
|
||||||
redisUtilPool.hashSet(RedisConstant.PRIVATE_STORE_SN_BIND, request.getSn(), request.getStoreId(), SN_CACHE_TIME);
|
redisUtilPool.hashSet(RedisConstant.PRIVATE_STORE_SN_BIND, request.getSn(), request.getStoreId(), SN_CACHE_TIME);
|
||||||
|
redisUtilPool.hashSet(RedisConstant.PRIVATE_STORE_SN_REVERSE, request.getStoreId(), request.getSn(), SN_CACHE_TIME);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
package com.cool.store.controller.webb;
|
package com.cool.store.controller.webb;
|
||||||
|
|
||||||
|
import com.cool.store.context.CurrentUserHolder;
|
||||||
|
import com.cool.store.context.LoginUserInfo;
|
||||||
|
import com.cool.store.enums.close.CloseTypeEnum;
|
||||||
|
import com.cool.store.request.close.store.CloseStoreApplyRequest;
|
||||||
import com.cool.store.request.close.store.CloseStoreCancelRequest;
|
import com.cool.store.request.close.store.CloseStoreCancelRequest;
|
||||||
import com.cool.store.request.close.store.CloseStoreQueryRequest;
|
import com.cool.store.request.close.store.CloseStoreQueryRequest;
|
||||||
import com.cool.store.request.close.store.CloseStoreAuditRequest;
|
import com.cool.store.request.close.store.CloseStoreAuditRequest;
|
||||||
import com.cool.store.response.AuditInfoResponse;
|
import com.cool.store.response.AuditInfoResponse;
|
||||||
import com.cool.store.response.ResponseResult;
|
import com.cool.store.response.ResponseResult;
|
||||||
import com.cool.store.service.close.CloseStoreService;
|
import com.cool.store.service.close.CloseStoreService;
|
||||||
|
import com.cool.store.utils.poi.StringUtils;
|
||||||
import com.cool.store.vo.close.store.*;
|
import com.cool.store.vo.close.store.*;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@@ -105,4 +110,14 @@ public class CloseStoreController {
|
|||||||
public ResponseResult<Boolean> suspendApply(@RequestBody @Valid CloseStoreCancelRequest request) {
|
public ResponseResult<Boolean> suspendApply(@RequestBody @Valid CloseStoreCancelRequest request) {
|
||||||
return ResponseResult.success(closeStoreService.suspendApply(request.getCloseStoreId()));
|
return ResponseResult.success(closeStoreService.suspendApply(request.getCloseStoreId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("申请闭店")
|
||||||
|
@PostMapping("/apply")
|
||||||
|
public ResponseResult<Boolean> applyCloseStore(@RequestBody @Valid CloseStoreApplyRequest request) {
|
||||||
|
request.setCloseType(CloseTypeEnum.INITIATE.getCloseType());
|
||||||
|
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||||
|
request.setUserId(user.getUserId());
|
||||||
|
request.setUserName(StringUtils.isNotBlank(user.getName()) ? user.getName() : user.getMobile());
|
||||||
|
return ResponseResult.success(closeStoreService.applyCloseStore(request));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package com.cool.store.controller.webb;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.cool.store.annotation.Debounce;
|
import com.cool.store.annotation.Debounce;
|
||||||
import com.cool.store.constants.CommonConstants;
|
import com.cool.store.constants.CommonConstants;
|
||||||
|
import com.cool.store.context.CurrentUserHolder;
|
||||||
|
import com.cool.store.context.LoginUserInfo;
|
||||||
import com.cool.store.dao.*;
|
import com.cool.store.dao.*;
|
||||||
import com.cool.store.dao.closeup.CloseUpApplyFormDAO;
|
import com.cool.store.dao.closeup.CloseUpApplyFormDAO;
|
||||||
import com.cool.store.dao.closeup.CloseUpPlatformDAO;
|
import com.cool.store.dao.closeup.CloseUpPlatformDAO;
|
||||||
@@ -22,6 +24,7 @@ import com.cool.store.entity.closeup.CloseUpPlatformDO;
|
|||||||
import com.cool.store.entity.bonus.BonusDistributionRuleDO;
|
import com.cool.store.entity.bonus.BonusDistributionRuleDO;
|
||||||
import com.cool.store.entity.fees.WalletPayInfoDO;
|
import com.cool.store.entity.fees.WalletPayInfoDO;
|
||||||
import com.cool.store.enums.*;
|
import com.cool.store.enums.*;
|
||||||
|
import com.cool.store.enums.close.CloseTypeEnum;
|
||||||
import com.cool.store.enums.point.ShopSubStageStatusEnum;
|
import com.cool.store.enums.point.ShopSubStageStatusEnum;
|
||||||
import com.cool.store.enums.wechat.WechatTemplateEnum;
|
import com.cool.store.enums.wechat.WechatTemplateEnum;
|
||||||
import com.cool.store.handler.WeChatHandler;
|
import com.cool.store.handler.WeChatHandler;
|
||||||
@@ -254,6 +257,10 @@ public class PCTestController {
|
|||||||
|
|
||||||
@PostMapping("/applyCloseStore")
|
@PostMapping("/applyCloseStore")
|
||||||
public ResponseResult<Boolean> applyCloseStore(@RequestBody @Valid CloseStoreApplyRequest request) {
|
public ResponseResult<Boolean> applyCloseStore(@RequestBody @Valid CloseStoreApplyRequest request) {
|
||||||
|
request.setCloseType(CloseTypeEnum.INITIATE.getCloseType());
|
||||||
|
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||||
|
request.setUserId(user.getUserId());
|
||||||
|
request.setUserName(StringUtils.isNotBlank(user.getName()) ? user.getName() : user.getMobile());
|
||||||
return ResponseResult.success(closeStoreService.applyCloseStore(request));
|
return ResponseResult.success(closeStoreService.applyCloseStore(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.cool.store.controller.webc;
|
package com.cool.store.controller.webc;
|
||||||
|
|
||||||
|
import com.cool.store.context.PartnerUserHolder;
|
||||||
import com.cool.store.enums.close.CloseTypeEnum;
|
import com.cool.store.enums.close.CloseTypeEnum;
|
||||||
import com.cool.store.request.close.store.CloseStoreApplyRequest;
|
import com.cool.store.request.close.store.CloseStoreApplyRequest;
|
||||||
import com.cool.store.request.close.store.CloseStoreCancelRequest;
|
import com.cool.store.request.close.store.CloseStoreCancelRequest;
|
||||||
@@ -8,12 +9,14 @@ import com.cool.store.request.close.store.ReCloseStoreApplyRequest;
|
|||||||
import com.cool.store.response.AuditInfoResponse;
|
import com.cool.store.response.AuditInfoResponse;
|
||||||
import com.cool.store.response.ResponseResult;
|
import com.cool.store.response.ResponseResult;
|
||||||
import com.cool.store.service.close.CloseStoreService;
|
import com.cool.store.service.close.CloseStoreService;
|
||||||
|
import com.cool.store.vo.PartnerUserInfoVO;
|
||||||
import com.cool.store.vo.close.store.*;
|
import com.cool.store.vo.close.store.*;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@@ -41,12 +44,18 @@ public class MiniCloseStoreController {
|
|||||||
@PostMapping("/apply")
|
@PostMapping("/apply")
|
||||||
public ResponseResult<Boolean> applyCloseStore(@RequestBody @Valid CloseStoreApplyRequest request) {
|
public ResponseResult<Boolean> applyCloseStore(@RequestBody @Valid CloseStoreApplyRequest request) {
|
||||||
request.setCloseType(CloseTypeEnum.INITIATE.getCloseType());
|
request.setCloseType(CloseTypeEnum.INITIATE.getCloseType());
|
||||||
|
PartnerUserInfoVO user = PartnerUserHolder.getUser();
|
||||||
|
request.setUserId(user.getPartnerId());
|
||||||
|
request.setUserName(StringUtils.isNotBlank(user.getUsername()) ? user.getUsername() : user.getMobile());
|
||||||
return ResponseResult.success(closeStoreService.applyCloseStore(request));
|
return ResponseResult.success(closeStoreService.applyCloseStore(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("拒绝后重新提交申请闭店")
|
@ApiOperation("拒绝后重新提交申请闭店")
|
||||||
@PostMapping("/reapply")
|
@PostMapping("/reapply")
|
||||||
public ResponseResult<Boolean> reApplyCloseStore(@RequestBody @Valid ReCloseStoreApplyRequest request) {
|
public ResponseResult<Boolean> reApplyCloseStore(@RequestBody @Valid ReCloseStoreApplyRequest request) {
|
||||||
|
PartnerUserInfoVO user = PartnerUserHolder.getUser();
|
||||||
|
request.setUserId(user.getPartnerId());
|
||||||
|
request.setUserName(StringUtils.isNotBlank(user.getUsername()) ? user.getUsername() : user.getMobile());
|
||||||
return ResponseResult.success(closeStoreService.reApplyCloseStore(request));
|
return ResponseResult.success(closeStoreService.reApplyCloseStore(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user