|
@@ -5,11 +5,14 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.parser.Feature;
|
|
|
import com.google.gson.Gson;
|
|
|
import com.platform.yijia.param.request.RechargeBalance;
|
|
|
+import com.platform.yijia.pojo.CustomerCardSetting;
|
|
|
+import com.platform.yijia.pojo.CustomerCardSettingDetail;
|
|
|
import com.platform.yijia.pojo.CustomerCardUseRecord;
|
|
|
import com.platform.yijia.pojo.CustomerElectronicCard;
|
|
|
import com.platform.yijia.service.ElectronicMembershipCardService;
|
|
|
import com.platform.yijia.service.StationService;
|
|
|
import com.platform.yijia.utils.*;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.stereotype.Controller;
|
|
@@ -18,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/*
|
|
@@ -29,7 +33,6 @@ import java.util.*;
|
|
|
@Controller
|
|
|
@RequestMapping("/demo")
|
|
|
public class ElectronicMembershipCardController {
|
|
|
-
|
|
|
private static Logger logger =(Logger) LoggerFactory.getLogger(ElectronicMembershipCardController.class);
|
|
|
|
|
|
@Resource
|
|
@@ -37,7 +40,7 @@ public class ElectronicMembershipCardController {
|
|
|
@Resource
|
|
|
private StationService stationService;
|
|
|
|
|
|
- //获取用户储蓄卡列表
|
|
|
+ //获取用户电子会员卡(储蓄卡)列表
|
|
|
@RequestMapping(value = "/getElectronicCardList", method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
public String getElectronicCardList(@RequestParam Integer stationId, String unionId){
|
|
@@ -56,72 +59,112 @@ public class ElectronicMembershipCardController {
|
|
|
return gson.toJson(resultData);
|
|
|
}
|
|
|
|
|
|
- //用户充值储蓄卡拉起随行付支付接口
|
|
|
+ //用户充值电子会员卡(储蓄卡)生成充值记录
|
|
|
@RequestMapping(value = "/rechargeBalance", method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
- public String rechargeBalance(RechargeBalance rechargeBalance){
|
|
|
+ public String rechargeBalance(@RequestBody RechargeBalance rechargeBalance){
|
|
|
Gson gson =new Gson();
|
|
|
//返回结果集
|
|
|
ResultData resultData = null;
|
|
|
if(rechargeBalance !=null){
|
|
|
BigDecimal amt = new BigDecimal(rechargeBalance.getAmt());
|
|
|
- String openId = rechargeBalance.getOpenId(); //公众号的openId
|
|
|
+ //String openId = rechargeBalance.getOpenId(); //公众号的openId
|
|
|
Integer stationId = rechargeBalance.getStationId();
|
|
|
- BigDecimal presentAmt = new BigDecimal(rechargeBalance.getPresentAmt());
|
|
|
+ //BigDecimal presentAmt = new BigDecimal(rechargeBalance.getPresentAmt());
|
|
|
+ String payType = rechargeBalance.getPayType();
|
|
|
String customerName = rechargeBalance.getCustomerName();
|
|
|
String cardOilsType = rechargeBalance.getCardOilsType();
|
|
|
String unionId = rechargeBalance.getUnionId();
|
|
|
String stationName = rechargeBalance.getStationName();
|
|
|
- //电子会员卡使用记录
|
|
|
- CustomerCardUseRecord customerCardUseRecord = new CustomerCardUseRecord();
|
|
|
- customerCardUseRecord.setUnionId(unionId);
|
|
|
- customerCardUseRecord.setStationId(stationId);
|
|
|
- customerCardUseRecord.setAmt(amt);
|
|
|
- customerCardUseRecord.setPresentAmt(presentAmt);
|
|
|
- customerCardUseRecord.setCardOilsType(cardOilsType);
|
|
|
- customerCardUseRecord.setStationName(stationName);
|
|
|
- customerCardUseRecord.setCustomerName(customerName);
|
|
|
- customerCardUseRecord.setUsageType("+");
|
|
|
- customerCardUseRecord.setType("1"); //1表示微信
|
|
|
- customerCardUseRecord.setCreateTime(new Date());
|
|
|
- customerCardUseRecord.setStatus("0");
|
|
|
- //订单规则 时间+6位随机数
|
|
|
- Random random = new Random();
|
|
|
- String str="";
|
|
|
- for(int i=0; i<6; i++){
|
|
|
- str+=random.nextInt(10);
|
|
|
- }
|
|
|
- String orderNo = System.nanoTime()+str;
|
|
|
- customerCardUseRecord.setOrderNo(orderNo);
|
|
|
+ String stationCardEnabledFlag = electronicMembershipCardService.getStationCardEnabledFlag(stationId);
|
|
|
+ //是否启用电子卡功能
|
|
|
+ if(stationCardEnabledFlag.equals("1")){
|
|
|
+ //CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard(); //电子会员卡
|
|
|
+ CustomerCardUseRecord customerCardUseRecord = new CustomerCardUseRecord(); //电子会员卡使用记录
|
|
|
+ CustomerCardSetting customerCardSetting = new CustomerCardSetting(); //电子卡优惠规则设置
|
|
|
|
|
|
- //电子会员卡
|
|
|
- CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
|
|
|
-// customerElectronicCard.setUnionId(unionId);
|
|
|
-// customerElectronicCard.setStationId(stationId);
|
|
|
-// customerElectronicCard.setCardOilsType(cardOilsType);
|
|
|
- customerElectronicCard.setId(rechargeBalance.getId());
|
|
|
- customerElectronicCard.setRecentlyTime(new Date());
|
|
|
-
|
|
|
- //获取当前用户要充值的的电子会员卡信息
|
|
|
- CustomerElectronicCard electronicCardInfo = electronicMembershipCardService.getElectronicCardInfo(customerElectronicCard);
|
|
|
- if(electronicCardInfo != null){
|
|
|
- BigDecimal amtBalance = electronicCardInfo.getAmt(); //用户当前卡内余额
|
|
|
- if(presentAmt !=null){ //有赠送金额时
|
|
|
- customerElectronicCard.setAmt(amtBalance.add(presentAmt).add(amt));
|
|
|
- }else { //无赠送金额时
|
|
|
- customerElectronicCard.setAmt(amtBalance.add(amt));
|
|
|
+ customerCardSetting.setStationId(stationId);
|
|
|
+ customerCardSetting.setCardOilsType(cardOilsType);
|
|
|
+ //获取用户要充值电子卡的优惠规则信息
|
|
|
+ List<CustomerCardSetting> cardRechargeSettingList = electronicMembershipCardService.getCardRechargeSettingList(customerCardSetting);
|
|
|
+ if(cardRechargeSettingList !=null && cardRechargeSettingList.size() ==1){
|
|
|
+ String discountTime = cardRechargeSettingList.get(0).getDiscountTime();
|
|
|
+ String[] dctime={}; //会员充值活动时间
|
|
|
+ if(discountTime.contains(",")){
|
|
|
+ dctime =discountTime.split(",");
|
|
|
+ }else {
|
|
|
+ dctime =new String[1];
|
|
|
+ dctime[0] = discountTime;
|
|
|
+ }
|
|
|
+ String currentTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
|
|
|
+ //循环优惠规则明细
|
|
|
+ for (CustomerCardSettingDetail cardDetail : cardRechargeSettingList.get(0).getCustomerCardSettingDetailList()){
|
|
|
+ if(amt.compareTo(cardDetail.getDiscountAmtTerm()) ==1 || amt.compareTo(cardDetail.getDiscountAmtTerm()) ==0){
|
|
|
+ //String isDiscountCoupon = cardRechargeSettingList.get(0).getIsDiscountCoupon(); //是否使用优惠券
|
|
|
+ //充值优惠类型
|
|
|
+ if(cardDetail.getSettingRuleType().equals("1")){ //按充值金额
|
|
|
+ BigDecimal presentAmt = cardDetail.getPresentAmt(); //当前赠送金额
|
|
|
+ if(dctime !=null){
|
|
|
+ for (String str : dctime){
|
|
|
+ if(str.contains(currentTime)){ //如果当前时间在会员日活动时间内
|
|
|
+ //计算会员日内的总赠送积分
|
|
|
+ if(cardRechargeSettingList.get(0).getPresentScale() !=null){
|
|
|
+ presentAmt = presentAmt.multiply(new BigDecimal(cardRechargeSettingList.get(0).getPresentScale())).add(presentAmt);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ customerCardUseRecord.setAmt(amt);
|
|
|
+ customerCardUseRecord.setPresentAmt(presentAmt);
|
|
|
+ }else if(cardDetail.getSettingRuleType().equals("2")){ //按充值金额的比例
|
|
|
+ BigDecimal presentAmt = amt.multiply(cardDetail.getPresentAmt().divide(new BigDecimal(100))); //当前赠送金额比例的赠送积分
|
|
|
+ if(dctime !=null){
|
|
|
+ for (String str : dctime){
|
|
|
+ if(str.contains(currentTime)){ //如果当前时间在会员日活动时间内
|
|
|
+ //计算会员日期内的总赠送积分
|
|
|
+ if(cardRechargeSettingList.get(0).getPresentScale() !=null){
|
|
|
+ presentAmt = presentAmt.multiply(new BigDecimal(cardRechargeSettingList.get(0).getPresentScale())).add(presentAmt);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ customerCardUseRecord.setAmt(amt);
|
|
|
+ customerCardUseRecord.setPresentAmt(presentAmt);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ customerCardUseRecord.setAmt(amt);
|
|
|
+ customerCardUseRecord.setPresentAmt(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ customerCardUseRecord.setUnionId(unionId);
|
|
|
+ customerCardUseRecord.setStationId(stationId);
|
|
|
+ customerCardUseRecord.setCardOilsType(cardOilsType);
|
|
|
+ customerCardUseRecord.setStationName(stationName);
|
|
|
+ customerCardUseRecord.setCustomerName(customerName);
|
|
|
+ customerCardUseRecord.setUsageType("+");
|
|
|
+ customerCardUseRecord.setPayType(payType); //1表示微信
|
|
|
+ customerCardUseRecord.setCreateTime(new Date());
|
|
|
+ customerCardUseRecord.setStatus("0");
|
|
|
+ //订单规则 时间+6位随机数
|
|
|
+ Random random = new Random();
|
|
|
+ String str="";
|
|
|
+ for(int i=0; i<6; i++){
|
|
|
+ str+=random.nextInt(10);
|
|
|
}
|
|
|
- electronicMembershipCardService.updateElectronicCardInfo(customerElectronicCard); //更新电子会员看余额信息
|
|
|
+ String orderNo = System.nanoTime()+str;
|
|
|
+ customerCardUseRecord.setOrderNo(orderNo);
|
|
|
electronicMembershipCardService.insetCardUseRecord(customerCardUseRecord); //插入电子会员卡的使用记录
|
|
|
resultData = ResultData.success(orderNo);
|
|
|
- }else {
|
|
|
- resultData = ResultData.error(CodeMsg.USER_EXSIST_CARD);
|
|
|
}
|
|
|
}
|
|
|
return gson.toJson(resultData);
|
|
|
}
|
|
|
|
|
|
- //用户充值储蓄卡拉起随行付支付接口
|
|
|
+ //用户充值电子会员卡(储蓄卡)拉起随行付支付接口
|
|
|
@RequestMapping(value = "/rechargeBalanceSXFPay", method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
public String rechargeBalanceSXFPay(@RequestBody RechargeBalance rechargeBalance){
|
|
@@ -237,7 +280,7 @@ public class ElectronicMembershipCardController {
|
|
|
return gson.toJson(resultData);
|
|
|
}
|
|
|
|
|
|
- //电子会员卡(储蓄卡)充值功能随行付回调功能
|
|
|
+ //用户电子会员卡(储蓄卡)充值功能随行付回调功能
|
|
|
@RequestMapping(value = "/getCardRechargeCallback", consumes = "application/json", method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
@Transactional
|
|
@@ -366,9 +409,15 @@ public class ElectronicMembershipCardController {
|
|
|
if(customerCardUseRecordInfo !=null && customerCardUseRecordInfo.getStatus().equals("0")){
|
|
|
CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
|
|
|
customerElectronicCard.setUnionId(customerCardUseRecord.getUnionId());
|
|
|
- customerElectronicCard.setAmt(new BigDecimal(amt));
|
|
|
+ //是否有赠送金额
|
|
|
+ if(customerCardUseRecordInfo.getPresentAmt() !=null){
|
|
|
+ BigDecimal presentAmt = customerCardUseRecordInfo.getPresentAmt(); //客户充值赠送金额
|
|
|
+ customerElectronicCard.setAmt(new BigDecimal(amt).add(presentAmt));
|
|
|
+ }else {
|
|
|
+ customerElectronicCard.setAmt(new BigDecimal(amt));
|
|
|
+ }
|
|
|
customerElectronicCard.setRecentlyTime(new Date());
|
|
|
- electronicMembershipCardService.updateElectronicCardInfo(customerElectronicCard);
|
|
|
+ electronicMembershipCardService.updateElectronicCardInfoByUnionId(customerElectronicCard);
|
|
|
customerCardUseRecord.setStatus("1");
|
|
|
electronicMembershipCardService.updateCardRecordStatusByOrderNo(customerCardUseRecord);
|
|
|
logger.info("=====================电子会员卡充值成功=============================");
|
|
@@ -378,8 +427,7 @@ public class ElectronicMembershipCardController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- //获取用户储蓄卡充值记录
|
|
|
+ //获取用户电子会员卡(储蓄卡)充值记录
|
|
|
@RequestMapping(value = "/getCardRechargeRecord", method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
public String getCardRechargeRecord(@RequestParam Integer stationId, String unionId){
|
|
@@ -399,7 +447,7 @@ public class ElectronicMembershipCardController {
|
|
|
return gson.toJson(resultData);
|
|
|
}
|
|
|
|
|
|
- //获取用户储蓄卡消费记录
|
|
|
+ //获取用户电子会员卡(储蓄卡)消费记录
|
|
|
@RequestMapping(value = "/getCardConsumptionRecord", method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
public String getCardConsumptionRecord(@RequestParam Integer stationId, String unionId){
|
|
@@ -419,5 +467,23 @@ public class ElectronicMembershipCardController {
|
|
|
return gson.toJson(resultData);
|
|
|
}
|
|
|
|
|
|
+ //查询油站电子会员卡(储蓄卡)充值设置规则
|
|
|
+ @RequestMapping(value = "/getCardRechargeSettingList", method = RequestMethod.GET)
|
|
|
+ @ResponseBody
|
|
|
+ public String getCardRechargeSettingList(@RequestParam Integer stationId, String cardOilsType){
|
|
|
+ Gson gson =new Gson();
|
|
|
+ //返回结果集
|
|
|
+ ResultData resultData = null;
|
|
|
+ if(stationId !=null && StringUtils.isNotBlank(cardOilsType)){
|
|
|
+ CustomerCardSetting customerCardSetting = new CustomerCardSetting();
|
|
|
+ customerCardSetting.setStationId(stationId);
|
|
|
+ customerCardSetting.setCardOilsType(cardOilsType);
|
|
|
+ List<CustomerCardSetting> cardRechargeSettingList = electronicMembershipCardService.getCardRechargeSettingList(customerCardSetting);
|
|
|
+ resultData = ResultData.success(cardRechargeSettingList);
|
|
|
+ }else {
|
|
|
+ resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
|
|
|
+ }
|
|
|
+ return gson.toJson(resultData);
|
|
|
+ }
|
|
|
|
|
|
}
|