Commit e96d82cf by 王祖波

兑换券扫码核销

parent d3a07f39
package com.gic.haoban.manage.web.controller.coupon;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.manage.web.controller.order.GicOrderController;
import com.gic.haoban.manage.web.vo.coupon.CoupCardClerkLogCountVO;
import com.gic.haoban.manage.web.vo.coupon.CoupCardClerkLogVO;
import com.gic.haoban.manage.web.vo.coupon.CoupCardVO;
import com.gic.haoban.manage.web.vo.order.OrderListVO;
import com.gic.marketing.api.dto.CoupCardDTO;
import com.gic.marketing.api.dto.card.CoupCardClerkLogDTO;
import com.gic.marketing.api.out.service.CouponHBOuterService;
import com.gic.marketing.api.qdto.card.HaobanWriteOffCardQDTO;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* 卡券
*/
@RestController
@RequestMapping("/coupon")
public class CouponController {
private static final org.apache.logging.log4j.Logger logger = LogManager.getLogger(CouponController.class);
@Autowired
private CouponHBOuterService couponHBOuterService;
/**
* 卡券导购核销
* @param cardLogId 卡券日志id
* @param enterpriseId 企业id
* @param clerkId 导购id
* @return
*/
@RequestMapping("/clerk-write-off")
public RestResponse<Void> writeOff(String cardLogId,
String enterpriseId,String clerkId) {
HaobanWriteOffCardQDTO writeOffCardQDTO = new HaobanWriteOffCardQDTO();
writeOffCardQDTO.setEnterpriseId(enterpriseId);
writeOffCardQDTO.setCardLogId(cardLogId);
writeOffCardQDTO.setClerkId(clerkId);
writeOffCardQDTO.setCardType(2);
ServiceResponse<Void> response = couponHBOuterService.scanWriteOff(writeOffCardQDTO);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
return RestResponse.successResult();
}
/**
* 卡券导购核销列表
* @param pageInfo 分页参数
* @param enterpriseId 企业id
* @param clerkId 导购id
* @param writeOffType 核销类型 1客户核销2导购核销
* @return
*/
@RequestMapping("/clerk-list")
public RestResponse<Page<CoupCardClerkLogVO>> list(BasePageInfo pageInfo,
String enterpriseId,String clerkId,Integer writeOffType) {
Page<CoupCardClerkLogDTO> page = new Page<>();
page.setCurrentPage(pageInfo.getPageNum());
page.setPageSize(pageInfo.getPageSize());
Map<String, Object> params = new HashMap<>();
params.put("clerkId", clerkId);
params.put("writeOffType", writeOffType);
page.setParams(params);
ServiceResponse<Page<CoupCardClerkLogDTO>> response = couponHBOuterService.pageClerkLog(enterpriseId, page);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
Page<CoupCardClerkLogVO> retPage = PageHelperUtils.changePageToCurrentPage(response.getResult(), CoupCardClerkLogVO.class);
return RestResponse.successResult(retPage);
}
/**
* 卡券导购核销详情
* @param clerkLogId
* @return
*/
@RequestMapping("/clerk-get")
public RestResponse<CoupCardVO> get(String clerkLogId) {
ServiceResponse<CoupCardClerkLogDTO> response = couponHBOuterService.getClerkLogById(clerkLogId);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
if (response.getResult() == null) {
return RestResponse.successResult();
}
CoupCardClerkLogDTO result = response.getResult();
CoupCardVO coupCardVO = EntityUtil.changeEntityNew(CoupCardVO.class, result);
CoupCardDTO coupCardDTO = result.getCoupCardDTO();
if (coupCardDTO != null) {
coupCardVO.setUseCondition(coupCardDTO.getUseCondition());
coupCardVO.setEffectTime(coupCardDTO.getEffectTime());
coupCardVO.setLimitTime(coupCardDTO.getLimitTime());
coupCardVO.setStatus(coupCardDTO.getStatus());
coupCardVO.setThirdName(coupCardDTO.getThirdName());
coupCardVO.setMemberName(coupCardDTO.getMemberName());
coupCardVO.setPhoneNum(coupCardDTO.getPhoneNum());
coupCardVO.setCardNum(coupCardDTO.getCardNum());
}
coupCardVO.setWriteOffTime(result.getCreateTime());
return RestResponse.successResult(coupCardVO);
}
/**
* 卡券核销数量
* @param enterpriseId 企业id
* @param clerkId 导购id
* @return
*/
@RequestMapping("/clerk-count")
public RestResponse<CoupCardClerkLogCountVO> get(String enterpriseId, String clerkId) {
ServiceResponse<Integer> memberResponse = couponHBOuterService.countClerkLog(enterpriseId, clerkId, 1);
ServiceResponse<Integer> clerkResponse = couponHBOuterService.countClerkLog(enterpriseId, clerkId, 2);
Integer memberCount = memberResponse.getResult();
Integer clerkCount = clerkResponse.getResult();
CoupCardClerkLogCountVO countVO = new CoupCardClerkLogCountVO();
countVO.setMemberCount(memberCount == null ? 0 :memberCount);
countVO.setClerkCount(clerkCount == null ? 0 :clerkCount);
return RestResponse.successResult(countVO);
}
}
...@@ -479,7 +479,7 @@ public class GicOrderController { ...@@ -479,7 +479,7 @@ public class GicOrderController {
} }
// 订单详情 // 订单详情
private OrderDetailVO getOrderDetail(String enterpriseId, OrderInfoDTO orderInfo, public OrderDetailVO getOrderDetail(String enterpriseId, OrderInfoDTO orderInfo,
List<ListOrderItemDTO> orderItemDTOList, String storeId) { List<ListOrderItemDTO> orderItemDTOList, String storeId) {
OrderDetailVO orderDetailVO = EntityUtil.changeEntityByJSON(OrderDetailVO.class, orderInfo); OrderDetailVO orderDetailVO = EntityUtil.changeEntityByJSON(OrderDetailVO.class, orderInfo);
orderDetailVO.setUsePoint(orderInfo.getUsePoints()); orderDetailVO.setUsePoint(orderInfo.getUsePoints());
......
package com.gic.haoban.manage.web.controller.scan;
import cn.hutool.db.Entity;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.business.order.dto.ordermanage.OrderDetailDTO;
import com.gic.business.order.qdto.ordermanage.QueryOrderDetailQDTO;
import com.gic.business.order.service.ordermanage.WebOrderManageApiService;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.manage.web.controller.order.GicOrderController;
import com.gic.haoban.manage.web.vo.coupon.CoupCardVO;
import com.gic.haoban.manage.web.vo.order.OrderDetailVO;
import com.gic.haoban.manage.web.vo.scan.ScanDetailVO;
import com.gic.marketing.api.dto.CoupCardDTO;
import com.gic.marketing.api.out.service.CouponHBOuterService;
import com.gic.marketing.api.qdto.card.HaobanWriteOffCardQDTO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 工作台
*/
@RestController
@RequestMapping("/scan")
public class ScanController {
private static final org.apache.logging.log4j.Logger logger = LogManager.getLogger(ScanController.class);
@Autowired
GicOrderController getOrderDetail;
@Autowired
private WebOrderManageApiService webOrderManageApiService;
@Autowired
private CouponHBOuterService couponHBOuterService;
@Autowired
private ClerkService clerkService;
/**
* 原有扫码接口聚合
* @see GicOrderController#scan(String, String, String)
* @param enterpriseId 企业id
* @param writeOffCode 核销码
* @param storeId 门店id
* @param clerkId 导购id
* @param analysisFlag 是否扫码 1是 0否
* @return
*/
@RequestMapping("/all")
public RestResponse<ScanDetailVO> scan(String enterpriseId, String writeOffCode, String storeId,String clerkId,Integer analysisFlag) {
if (StringUtils.isEmpty(writeOffCode)) {
return RestResponse.failure("9999", "核销码为空");
}
ScanDetailVO scanDetailVO = new ScanDetailVO();
// 通过核销码查询
QueryOrderDetailQDTO qdto = new QueryOrderDetailQDTO();
qdto.setEnterpriseId(enterpriseId);
qdto.setWriteOffCode(writeOffCode);
ServiceResponse<OrderDetailDTO> ret = webOrderManageApiService.getOrderDetail(qdto);
OrderDetailDTO detail = ret.getResult();
logger.info("订单信息={}", JSON.toJSONString(ret));
//订单
if (ret.isSuccess() && detail != null) {
// 已核销,且不是好办核销的
if (null != detail.getOrderInfo().getDeliveryOptType()
&& detail.getOrderInfo().getDeliveryOptType() != 1) {
logger.info("已核销,且不是好办核销的={}", writeOffCode);
scanDetailVO.setOrderError("此自提点无法核销");
}
if (!storeId.equals(detail.getOrderInfo().getPickUpStoreId())) {
scanDetailVO.setOrderError("此自提点无法核销");
}
OrderDetailVO orderDetailVO = getOrderDetail.getOrderDetail(enterpriseId, ret.getResult().getOrderInfo(),
ret.getResult().getOrderItemList(), storeId);
if (!(orderDetailVO.getOrderStep().equals("2") || orderDetailVO.getOrderStep().equals("4"))) {
scanDetailVO.setOrderError("核销订单不存在");
}
Date pickOverTime = detail.getOrderInfo().getPickUpOverTime();
if (null != pickOverTime && pickOverTime.before(new Date())) {
scanDetailVO.setOrderError("此订单自提时间已截止");
}
scanDetailVO.setOrderDetailVO(orderDetailVO);
}
//卡券
HaobanWriteOffCardQDTO writeOffCardQDTO = new HaobanWriteOffCardQDTO();
writeOffCardQDTO.setEnterpriseId(enterpriseId);
writeOffCardQDTO.setCardCode(writeOffCode);
writeOffCardQDTO.setClerkId(clerkId);
writeOffCardQDTO.setCardType(2);
writeOffCardQDTO.setAnalysisFlag(analysisFlag);
ServiceResponse<List<CoupCardDTO>> couponRet = couponHBOuterService.getCardLogByCode(writeOffCardQDTO);
if (couponRet.isSuccess() && CollectionUtils.isNotEmpty(couponRet.getResult())) {
List<CoupCardDTO> couponList = couponRet.getResult();
ClerkDTO clerkDTO = clerkService.getclerkById(clerkId);
if (couponList.size() > 1) {
scanDetailVO.setCouponError("识别到多张兑换券,为防止核销错误,请协助会员,在会员小程序中进行兑换券核销");
scanDetailVO.setCouponErrorType(1);
}else {
CoupCardDTO coupCardDTO = couponList.get(0);
Integer verificationType = coupCardDTO.getVerificationType();
if (!Objects.equals(verificationType, 0)) {
scanDetailVO.setCouponError("请通过收银台核销此兑换券");
}
boolean checkStore = coupCardDTO.isCheckStore();
if (!checkStore) {
scanDetailVO.setCouponError("兑换码在本店不可用");
}
}
CoupCardVO cardVO = EntityUtil.changeEntityNew(CoupCardVO.class, couponList.get(0));
if (clerkDTO != null) {
cardVO.setStoreName(clerkDTO.getStoreName());
cardVO.setClerkName(clerkDTO.getClerkName());
}
scanDetailVO.setCardVO(cardVO);
}
return RestResponse.successResult(scanDetailVO);
}
}
package com.gic.haoban.manage.web.vo.coupon;
import java.io.Serializable;
import java.util.Date;
public class CoupCardClerkLogCountVO implements Serializable {
private static final long serialVersionUID = 707322017107902L;
/**
* 导购核销数量
*/
private Integer clerkCount = 0 ;
/**
* 会员核销数量
*/
private Integer memberCount = 0;
/**
* 总核销数量
*/
private Integer totalCount = 0;
public Integer getClerkCount() {
return clerkCount;
}
public void setClerkCount(Integer clerkCount) {
this.clerkCount = clerkCount;
}
public Integer getMemberCount() {
return memberCount;
}
public void setMemberCount(Integer memberCount) {
this.memberCount = memberCount;
}
public Integer getTotalCount() {
return this.memberCount + clerkCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
}
\ No newline at end of file
package com.gic.haoban.manage.web.vo.coupon;
import java.io.Serializable;
import java.util.Date;
public class CoupCardClerkLogVO implements Serializable {
private static final long serialVersionUID = 707322017107902L;
/**主键*/
private String clerkLogId;
/**企业id*/
private String enterpriseId;
/** 会员id */
private String memberId;
/** 卡券日志id */
private String cardLogId;
/**
* 卡券编码
*/
private String cardCode;
/**
* 卡券名称
*/
private String cardName;
/** 卡券id */
private String coupCardId;
/** 门店id */
private String storeId;
/** 门店code */
private String storeCode;
/** 门店名称 */
private String storeName;
/** 导购id */
private String clerkId;
/** 导购名称 */
private String clerkName;
/** 导购code */
private String clerkCode;
/**
* 核销类型1客户核销2导购核销
*/
private Integer writeOffType;
private Date updateTime;
private Date createTime;
/**
* 核销时间
*/
private Date writeOffTime;
public String getClerkLogId() {
return clerkLogId;
}
public void setClerkLogId(String clerkLogId) {
this.clerkLogId = clerkLogId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getCardLogId() {
return cardLogId;
}
public void setCardLogId(String cardLogId) {
this.cardLogId = cardLogId;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getCardCode() {
return cardCode;
}
public void setCardCode(String cardCode) {
this.cardCode = cardCode;
}
public String getCoupCardId() {
return coupCardId;
}
public void setCoupCardId(String coupCardId) {
this.coupCardId = coupCardId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getStoreCode() {
return storeCode;
}
public void setStoreCode(String storeCode) {
this.storeCode = storeCode;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public Integer getWriteOffType() {
return writeOffType;
}
public void setWriteOffType(Integer writeOffType) {
this.writeOffType = writeOffType;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getWriteOffTime() {
return createTime;
}
public void setWriteOffTime(Date writeOffTime) {
this.writeOffTime = writeOffTime;
}
}
\ No newline at end of file
package com.gic.haoban.manage.web.vo.coupon;
import java.io.Serializable;
import java.util.Date;
public class CoupCardVO implements Serializable {
private static final long serialVersionUID = -5868328668312616015L;
/**
* 卡券日志id
*/
private String cardLogId;
/**
* 卡券id
*/
private String coupCardId;
/**
* 卡券名称
*/
private String cardName;
/**
* 使用条件
*/
private String useCondition;
/**
* 券号
*/
private String cardCode;
/**
* 生效时间
*/
private Date effectTime;
/**
* 截止时间
*/
private Date limitTime;
/**
* 状态 待领取:3; 待核销:4; 已核销:5; 已过期:6; 已销毁:7; 已占用:8; 转赠中:9 ;已转赠:10
*/
private Integer status;
/**
* 会员昵称
*/
private String thirdName;
/**
* 会员名称
*/
private String memberName;
/**
* 会员手机号码
*/
private String phoneNum;
/**
* 会员卡号
*/
private String cardNum;
/**
* 门店名称
*/
private String storeName;
/**
* 导购名称
*/
private String clerkName;
/**
* 核销时间
*/
private Date writeOffTime;
public String getCardLogId() {
return cardLogId;
}
public void setCardLogId(String cardLogId) {
this.cardLogId = cardLogId;
}
public String getCoupCardId() {
return coupCardId;
}
public void setCoupCardId(String coupCardId) {
this.coupCardId = coupCardId;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getUseCondition() {
return useCondition;
}
public void setUseCondition(String useCondition) {
this.useCondition = useCondition;
}
public String getCardCode() {
return cardCode;
}
public void setCardCode(String cardCode) {
this.cardCode = cardCode;
}
public Date getEffectTime() {
return effectTime;
}
public void setEffectTime(Date effectTime) {
this.effectTime = effectTime;
}
public Date getLimitTime() {
return limitTime;
}
public void setLimitTime(Date limitTime) {
this.limitTime = limitTime;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getThirdName() {
return thirdName;
}
public void setThirdName(String thirdName) {
this.thirdName = thirdName;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
public String getCardNum() {
return cardNum;
}
public void setCardNum(String cardNum) {
this.cardNum = cardNum;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public Date getWriteOffTime() {
return writeOffTime;
}
public void setWriteOffTime(Date writeOffTime) {
this.writeOffTime = writeOffTime;
}
}
package com.gic.haoban.manage.web.vo.scan;
import com.gic.haoban.manage.web.vo.coupon.CoupCardVO;
import com.gic.haoban.manage.web.vo.order.OrderDetailVO;
import com.gic.marketing.api.dto.CoupCardDTO;
import java.io.Serializable;
public class ScanDetailVO implements Serializable {
private static final long serialVersionUID = 5215230055823016992L;
/**
* 订单详情
*/
private OrderDetailVO orderDetailVO;
/**
* 卡券详情
*/
private CoupCardVO cardVO;
/**
* 订单错误信息
*/
private String orderError;
/**
* 卡券错误信息
*/
private String couponError;
/**
* 错误信息类型 1弹窗
*/
private Integer couponErrorType = 0;
public OrderDetailVO getOrderDetailVO() {
return orderDetailVO;
}
public void setOrderDetailVO(OrderDetailVO orderDetailVO) {
this.orderDetailVO = orderDetailVO;
}
public CoupCardVO getCardVO() {
return cardVO;
}
public void setCardVO(CoupCardVO cardVO) {
this.cardVO = cardVO;
}
public String getOrderError() {
return orderError;
}
public void setOrderError(String orderError) {
this.orderError = orderError;
}
public String getCouponError() {
return couponError;
}
public void setCouponError(String couponError) {
this.couponError = couponError;
}
public Integer getCouponErrorType() {
return couponErrorType;
}
public void setCouponErrorType(Integer couponErrorType) {
this.couponErrorType = couponErrorType;
}
}
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
<dubbo:reference interface="com.gic.marketing.api.service.WechatMarketingService" id="wechatMarketingService" /> <dubbo:reference interface="com.gic.marketing.api.service.WechatMarketingService" id="wechatMarketingService" />
<dubbo:reference interface="com.gic.marketing.pro.api.service.ai.AiMemberLogApiService" id="aiMemberLogApiService" /> <dubbo:reference interface="com.gic.marketing.pro.api.service.ai.AiMemberLogApiService" id="aiMemberLogApiService" />
<dubbo:reference interface="com.gic.marketing.api.service.CouponCardService" id="couponCardService" /> <dubbo:reference interface="com.gic.marketing.api.service.CouponCardService" id="couponCardService" />
<dubbo:reference interface="com.gic.marketing.api.out.service.CouponHBOuterService" id="couponHBOuterService" />
<dubbo:reference interface="com.gic.game.api.service.GameService" id="gameService" /> <dubbo:reference interface="com.gic.game.api.service.GameService" id="gameService" />
<dubbo:reference interface="com.gic.enterprise.service.CustomSettingApiService" id="customSettingApiService" /> <dubbo:reference interface="com.gic.enterprise.service.CustomSettingApiService" id="customSettingApiService" />
<dubbo:reference interface="com.gic.marketing.pro.api.service.game.GameApiService" id="gameApiService" /> <dubbo:reference interface="com.gic.marketing.pro.api.service.game.GameApiService" id="gameApiService" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment