Commit ec0989d1 by caosy

劵置换

parent d07b8c1c
......@@ -14,6 +14,8 @@ import com.ctrip.fun.common.vo.Request;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.ResponseStatusEnum;
import com.ctrip.fun.common.vo.basic.VoucherGetLogBean;
import com.ctrip.fun.common.vo.basic.VoucherGiftQuery;
import com.ctrip.fun.common.vo.basic.VoucherGiftVo;
import com.ctrip.fun.common.vo.basic.VoucherItemDTO;
import com.ctrip.fun.common.vo.basic.VoucherQueryDto;
import com.ctrip.fun.common.vo.basic.VoucherQueryFormDTO;
......@@ -21,6 +23,7 @@ import com.ctrip.fun.common.vo.basic.VoucherQueryRequestDTO;
import com.ctrip.fun.common.vo.basic.VoucherRequestDto;
import com.ctrip.fun.common.vo.basic.VoucherShareLogBean;
import com.ctrip.fun.common.vo.basic.VoucherShareLogQuery;
import com.ctrip.fun.common.vo.order.OrderQuery;
import com.ctrip.fun.golf.service.basic.VoucherService;
/**
......@@ -167,6 +170,50 @@ public class VoucherController {
return response;
}
/**
* 置换卷 列表
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value = "/getVoucherGiftList", method = RequestMethod.POST)
public Response<PagedResponseBean<VoucherGiftVo>> getVoucherGiftList(@RequestBody Request<VoucherGiftQuery> request) {
Response<PagedResponseBean<VoucherGiftVo>> response = new Response<PagedResponseBean<VoucherGiftVo>>();
PagedResponseBean<VoucherGiftVo> result = voucherService.getVoucherGiftList(request.getBody());
response.setBody(result);
response.setStatusEnum(ResponseStatusEnum.SUCCESS);
return response;
}
/**
* 确认置换
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value = "/voucherGiftAffirm", method = RequestMethod.POST)
public Response<?> voucherGiftAffirm(@RequestBody Request<VoucherGiftQuery> request) {
Response<?> response = new Response<>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
voucherService.voucherGiftAffirm(request.getBody());
return response;
}
/**
* 取消置换
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value = "/voucherGiftCancel", method = RequestMethod.POST)
public Response<?> voucherGiftCancel(@RequestBody Request<VoucherGiftQuery> request) {
Response<?> response = new Response<>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
voucherService.voucherGiftCancel(request.getBody());
return response;
}
@ResponseBody
@RequestMapping(value = "/queryVoucherShareLogListForMiniApps", method = RequestMethod.POST)
public Response<PagedResponseBean<VoucherShareLogBean>> queryVoucherShareLogListForMiniApps(@RequestBody Request<VoucherShareLogQuery> request) {
......
......@@ -30,6 +30,8 @@ import com.ctrip.fun.common.vo.SortDirectionEnum;
import com.ctrip.fun.common.vo.basic.SmsStatus;
import com.ctrip.fun.common.vo.basic.SmsType;
import com.ctrip.fun.common.vo.basic.UserGradeAndVipGradeEnum;
import com.ctrip.fun.common.vo.basic.VoucherGiftQuery;
import com.ctrip.fun.common.vo.basic.VoucherGiftVo;
import com.ctrip.fun.common.vo.basic.VoucherItemDTO;
import com.ctrip.fun.common.vo.basic.VoucherQueryDto;
import com.ctrip.fun.common.vo.basic.VoucherQueryFormDTO;
......@@ -982,6 +984,12 @@ public class VoucherDao extends GenericHibernateDao<Voucher, Integer> {
query.executeUpdate();
}
//获取某种券未使用的数量
public List<Voucher> getUserRuleCount(Integer ruleId,String uid) {
String hsql = "from Voucher t where t.used=0 and deleteStatus = 0 and t.uid=" + uid +" and t.ruleId=" +ruleId;
return this.getEntities(hsql);
}
}
package com.ctrip.fun.golf.domain.basic;
import static javax.persistence.GenerationType.IDENTITY;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "bsc_voucher_gift", catalog = "fundb")
public class VoucherGift implements java.io.Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Integer id;
/**
* 置换规则id
*/
private Integer giftRuleId;
/**
* 置换规则名称
*/
private String giftRuleName;
/**
* 置换张数
*/
private Integer number;
/**
* 状态 0 销售提交 1 客户确认 2 客户取消 3销售取消
*/
private Integer status;
/**
* 客户uid
*/
private String clientUid;
/**
* 销售工作号id
*/
private Integer userWorkerId;
/**
* 销售提交时间
*/
private Date createdTime;
/**
* 客户确认时间
*/
private Date affirmTime;
/**
* 取消时间
*/
private Date cancelTime;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "gift_rule_id")
public Integer getGiftRuleId() {
return giftRuleId;
}
public void setGiftRuleId(Integer giftRuleId) {
this.giftRuleId = giftRuleId;
}
@Column(name = "gift_rule_name")
public String getGiftRuleName() {
return giftRuleName;
}
public void setGiftRuleName(String giftRuleName) {
this.giftRuleName = giftRuleName;
}
@Column(name = "number")
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
@Column(name = "status")
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Column(name = "client_uid")
public String getClientUid() {
return clientUid;
}
public void setClientUid(String clientUid) {
this.clientUid = clientUid;
}
@Column(name = "user_worker_id")
public Integer getUserWorkerId() {
return userWorkerId;
}
public void setUserWorkerId(Integer userWorkerId) {
this.userWorkerId = userWorkerId;
}
@Column(name = "created_time")
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Column(name = "affirm_time")
public Date getAffirmTime() {
return affirmTime;
}
public void setAffirmTime(Date affirmTime) {
this.affirmTime = affirmTime;
}
@Column(name = "cancel_time")
public Date getCancelTime() {
return cancelTime;
}
public void setCancelTime(Date cancelTime) {
this.cancelTime = cancelTime;
}
}
package com.ctrip.fun.golf.domain.basic;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "bsc_voucher_gift_rule")
public class VoucherGiftRule {
/**
* 主键
*/
private Integer id;
/**
* 换卷规则名称
*/
private String giftName;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 被换的卷规则id
*/
private Integer fromRuleId;
/**
*换成的卷规则id
*/
private Integer toRuleId;
/**
* 规则状态 0 暂停 1 开始
*/
private Integer status;
/**
* 被换的劵名称
*/
private String fromRuleName;
/**
*换成的卷名称
*/
private String toRuleName;
/**
* 劵来源 0 不限 1 线上 2 线下
*/
private Integer source;
/**
* 是否已审核通过 0初始值 1 审核通过 2未通过
*/
private Integer isPass;
/**
* 审核时间
*/
private Date passTime;
/**
* 审核人
*/
private String passName;
/**
* 创建时间
*/
private Date createdTime;
/**
* 创建人
*/
private String createdName;
@Id
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "gift_name")
public String getGiftName() {
return giftName;
}
public void setGiftName(String giftName) {
this.giftName = giftName;
}
@Column(name = "start_time")
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
@Column(name = "end_time")
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
@Column(name = "from_rule_id")
public Integer getFromRuleId() {
return fromRuleId;
}
public void setFromRuleId(Integer fromRuleId) {
this.fromRuleId = fromRuleId;
}
@Column(name = "to_rule_id")
public Integer getToRuleId() {
return toRuleId;
}
public void setToRuleId(Integer toRuleId) {
this.toRuleId = toRuleId;
}
@Column(name = "status")
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Column(name = "from_rule_name")
public String getFromRuleName() {
return fromRuleName;
}
public void setFromRuleName(String fromRuleName) {
this.fromRuleName = fromRuleName;
}
@Column(name = "to_rule_name")
public String getToRuleName() {
return toRuleName;
}
public void setToRuleName(String toRuleName) {
this.toRuleName = toRuleName;
}
@Column(name = "source")
public Integer getSource() {
return source;
}
public void setSource(Integer source) {
this.source = source;
}
@Column(name = "is_pass")
public Integer getIsPass() {
return isPass;
}
public void setIsPass(Integer isPass) {
this.isPass = isPass;
}
@Column(name = "pass_time")
public Date getPassTime() {
return passTime;
}
public void setPassTime(Date passTime) {
this.passTime = passTime;
}
@Column(name = "pass_name")
public String getPassName() {
return passName;
}
public void setPassName(String passName) {
this.passName = passName;
}
@Column(name = "created_time")
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Column(name = "created_name")
public String getCreatedName() {
return createdName;
}
public void setCreatedName(String createdName) {
this.createdName = createdName;
}
}
......@@ -13,6 +13,7 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import com.alibaba.fastjson.JSON;
......@@ -38,6 +39,8 @@ import com.ctrip.fun.common.vo.basic.MultipleCourseConditionBean;
import com.ctrip.fun.common.vo.basic.SmsStatus;
import com.ctrip.fun.common.vo.basic.SmsType;
import com.ctrip.fun.common.vo.basic.VoucherGetLogBean;
import com.ctrip.fun.common.vo.basic.VoucherGiftQuery;
import com.ctrip.fun.common.vo.basic.VoucherGiftVo;
import com.ctrip.fun.common.vo.basic.VoucherItemDTO;
import com.ctrip.fun.common.vo.basic.VoucherQueryDto;
import com.ctrip.fun.common.vo.basic.VoucherQueryFormDTO;
......@@ -49,12 +52,15 @@ import com.ctrip.fun.common.vo.basic.VoucherShareLogQuery;
import com.ctrip.fun.common.vo.basic.VoucherSourceEnum;
import com.ctrip.fun.common.vo.basic.VoucherTypeEnum;
import com.ctrip.fun.common.vo.basic.VourcherUsedEnum;
import com.ctrip.fun.common.vo.order.OrderQuery;
import com.ctrip.fun.common.vo.user.TokenTypeEnum;
import com.ctrip.fun.golf.dao.assemble.AsmCourseResourceDao;
import com.ctrip.fun.golf.dao.basic.OperationMessageDao;
import com.ctrip.fun.golf.dao.basic.SmsDao;
import com.ctrip.fun.golf.dao.basic.VoucherDao;
import com.ctrip.fun.golf.dao.basic.VoucherGetLogDao;
import com.ctrip.fun.golf.dao.basic.VoucherGiftDao;
import com.ctrip.fun.golf.dao.basic.VoucherGiftRuleDao;
import com.ctrip.fun.golf.dao.basic.VoucherRuleDao;
import com.ctrip.fun.golf.dao.basic.VoucherShareLogDao;
import com.ctrip.fun.golf.dao.client.ClientConfigDao;
......@@ -69,6 +75,8 @@ import com.ctrip.fun.golf.domain.basic.OperationMessage;
import com.ctrip.fun.golf.domain.basic.Sms;
import com.ctrip.fun.golf.domain.basic.Voucher;
import com.ctrip.fun.golf.domain.basic.VoucherGetLog;
import com.ctrip.fun.golf.domain.basic.VoucherGift;
import com.ctrip.fun.golf.domain.basic.VoucherGiftRule;
import com.ctrip.fun.golf.domain.basic.VoucherRule;
import com.ctrip.fun.golf.domain.basic.VoucherShareLog;
import com.ctrip.fun.golf.domain.client.ClientConfig;
......@@ -77,6 +85,7 @@ import com.ctrip.fun.golf.domain.product.CourseResource;
import com.ctrip.fun.golf.domain.tour.TourBasic;
import com.ctrip.fun.golf.domain.user.UserExt;
import com.ctrip.fun.golf.domain.user.UserToken;
import com.ctrip.fun.golf.exceptions.OrderException;
import com.ctrip.fun.golf.exceptions.VoucherException;
import com.ctrip.fun.golf.vo.PagedEntityBean;
import com.ctrip.fun.mall.vo.LabelValueBean;
......@@ -98,6 +107,8 @@ public class VoucherService {
private EventActivityOrderItemDao eventActivityOrderItemDao = null;
private OrderDao orderDao = null;
private TourBasicDao tourBasicDao;
private VoucherGiftDao voucherGiftDao = null;
private VoucherGiftRuleDao voucherGiftRuleDao = null;
@Autowired
private CourseProductDao courseProductDao;
......@@ -804,6 +815,56 @@ public class VoucherService {
return queryListForMiniApps;
}
// 查询置换劵列表
public PagedResponseBean<VoucherGiftVo> getVoucherGiftList(VoucherGiftQuery queryBean) {
UserToken userToken = this.userTokenDao.getUserTokenByToken(queryBean.getToken(),
TokenTypeEnum.ACCESS.getKey());
queryBean.setUid(userToken.getUserId());
PagedResponseBean<VoucherGiftVo> queryListForMiniApps = voucherGiftDao.getVoucherGiftList(queryBean);
return queryListForMiniApps;
}
// 确认置换
public void voucherGiftAffirm(VoucherGiftQuery voucherGiftQuery) {
VoucherGift voucherGift = this.voucherGiftDao.findById(voucherGiftQuery.getId());
VoucherGiftRule voucherGiftRule = this.voucherGiftRuleDao.findById(voucherGift.getGiftRuleId());
List<Voucher> voucherList = this.voucherDao.getUserRuleCount(voucherGiftRule.getFromRuleId(), voucherGift.getClientUid());
if(voucherGift.getStatus() != 0){
throw new VoucherException(-2, "不可确认置换");
}
if(voucherList.size() < voucherGift.getNumber()){
throw new VoucherException(-2, "置换卷数量不足");
}
// 置换劵
//1.1 删除劵
for(int i=0 ;i<voucherGift.getNumber(); i++ ){
Voucher voucher = voucherList.get(i);
String voucherId = String.valueOf(voucher.getId());
//删除劵
voucherDao.deleteVoucher(voucherGift.getClientUid(), voucher.getId(), "置换劵删除");
//发劵
this.sendVoucherForGiftByConfig(voucherGiftRule.getToRuleId(), voucherGift.getClientUid(),voucherId,true,"","","");
}
//更新确认状态
voucherGiftDao.updateVoucherGiftAffirm(voucherGift.getId(),1);
}
/**
* 取消置换
* @param voucherGiftQuery
*/
public void voucherGiftCancel(VoucherGiftQuery voucherGiftQuery) {
VoucherGift voucherGift = voucherGiftDao.findById(voucherGiftQuery.getId());
if(voucherGift.getStatus() != 0){
throw new VoucherException(-2, "不可取消置换");
}
voucherGiftDao.updateVoucherGiftCancel(voucherGiftQuery.getId(),2);
}
//小程序查询券的分享记录
public PagedResponseBean<VoucherShareLogBean> queryVoucherShareLogListForMiniApps(VoucherShareLogQuery query) {
UserToken userToken = this.userTokenDao.getUserTokenByToken(query.getToken(),
......@@ -1118,7 +1179,6 @@ public class VoucherService {
this.sendVoucherForPlaceOrderByConfig(uid, orderId, myselfOrder, commune_voucher,"","","");
}
/**
*
......@@ -1148,6 +1208,27 @@ public class VoucherService {
}
/**
* 置换劵
*/
public void sendVoucherForGiftByConfig(Integer ruleId,String uid,String orderId,boolean myselfOrder,String realName,String idCard,String mobilePhone){
try {
VoucherRule roucherRule = voucherRuleDao.findById(ruleId);
Voucher voucher = this.getVoucherFromRule(roucherRule,realName,idCard,mobilePhone);
voucher.setNo("");
voucher.setUid(uid);
voucher.setSourceRemark(orderId);
voucher.setSource(VoucherSourceEnum.RULE_GIFT_PRESENT.getValue());
voucher.setOperator(VoucherSourceEnum.RULE_GIFT_PRESENT.getMsg());
voucherDao.save(voucher);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 用于执行下单送券
* @param uid 得券人uid
* @param orderNo 订单id
......@@ -1325,5 +1406,23 @@ public class VoucherService {
return response;
}
public VoucherGiftDao getVoucherGiftDao() {
return voucherGiftDao;
}
public void setVoucherGiftDao(VoucherGiftDao voucherGiftDao) {
this.voucherGiftDao = voucherGiftDao;
}
public VoucherGiftRuleDao getVoucherGiftRuleDao() {
return voucherGiftRuleDao;
}
public void setVoucherGiftRuleDao(VoucherGiftRuleDao voucherGiftRuleDao) {
this.voucherGiftRuleDao = voucherGiftRuleDao;
}
}
......@@ -11,7 +11,15 @@
<bean name="voucherDao" class="com.ctrip.fun.golf.dao.basic.VoucherDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean name="voucherGiftDao" class="com.ctrip.fun.golf.dao.basic.VoucherGiftDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean name="voucherGiftRuleDao" class="com.ctrip.fun.golf.dao.basic.VoucherGiftRuleDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean name="voucherRuleDao" class="com.ctrip.fun.golf.dao.basic.VoucherRuleDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
......@@ -114,6 +122,8 @@
<property name="eventActivityOrderItemDao" ref="eventActivityOrderItemDao"></property>
<property name="remindExpireVoucherDay" value="${remindExpireVoucherDay}"></property>
<property name="tourBasicDao" ref="tourBasicDao"></property>
<property name="voucherGiftDao" ref="voucherGiftDao"></property>
<property name="voucherGiftRuleDao" ref="voucherGiftRuleDao"></property>
</bean>
<bean name="voucherRuleService" class="com.ctrip.fun.golf.service.basic.VoucherRuleService">
......
......@@ -22,8 +22,10 @@
<mapping class="com.ctrip.fun.golf.domain.basic.OutsideUser" />
<mapping class="com.ctrip.fun.golf.domain.basic.PrePayCard"/>
<mapping class="com.ctrip.fun.golf.domain.basic.PrePayCardProcessLog"/>
<mapping class="com.ctrip.fun.golf.domain.basic.Voucher" />
<mapping class="com.ctrip.fun.golf.domain.basic.VoucherRule" />
<mapping class="com.ctrip.fun.golf.domain.basic.Voucher"/>
<mapping class="com.ctrip.fun.golf.domain.basic.VoucherRule"/>
<mapping class="com.ctrip.fun.golf.domain.basic.VoucherGift"/>
<mapping class="com.ctrip.fun.golf.domain.basic.VoucherGiftRule"/>
<mapping class="com.ctrip.fun.golf.domain.basic.OperationMessage" />
<mapping class="com.ctrip.fun.golf.domain.recommend.RecommendLogs" />
<mapping class="com.ctrip.fun.golf.domain.operation.Logging" />
......
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 sign in to comment