package com.platform.yijia.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.platform.yijia.config.YiJiaRequest;
import com.platform.yijia.param.request.AppUserInfoRequest;
import com.platform.yijia.pojo.*;
import com.platform.yijia.service.AppUserInfoService;
import com.platform.yijia.service.CouponService;
import com.platform.yijia.service.StationService;
import com.platform.yijia.service.SysUserService;
import com.platform.yijia.utils.CodeMsg;
import com.platform.yijia.utils.CryptUtil;
import com.platform.yijia.utils.ResultData;
import com.sun.corba.se.spi.ior.ObjectKey;
import com.sun.org.apache.bcel.internal.classfile.Code;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
/*
*
CouponController
* 优惠券
*/
@Controller
@YiJiaRequest()
@CrossOrigin
@Api(tags = "优惠券")
public class CouponController {
private static Logger logger =(Logger) LoggerFactory.getLogger(CouponController.class);
@Resource
private CouponService couponService;
@Resource
private StationService stationService;
@Autowired
private AppUserInfoService appUserInfoService;
@Autowired
private SysUserService sysUserService;
/**
* 获取油站分发优惠券
* @param stationId 油站ID
* @param couponIssueId 发放方式ID
* @return
*/
@RequestMapping(value = "/selectStaGrantCouponList", method = RequestMethod.GET)
@Transactional
@ResponseBody
@ApiOperation(value = "获取油站已发放的优惠券信息", httpMethod = "GET", notes = "获取油站已发放的优惠券信息")
public String selectStaGrantCouponList(@ApiParam(value = "油站ID", required = true) @RequestParam Integer stationId,
@ApiParam(value = "用户unionId", required = true) @RequestParam String unionId,
@ApiParam(value = "发放方式ID", required = true) @RequestParam String couponIssueId){
Gson gson =new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
ResultData resultData = null;
try {
if(unionId !=null && stationId !=null && couponIssueId !=null){
//返回前端结果
Map resultMap = new HashMap<>();
StationInfo stationInfo = new StationInfo();
stationInfo.setStationId(stationId);
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
if(stationInfos !=null && stationInfos.getCouponEnabledFlag().equals("1")){
CouponIssue couponIssue = new CouponIssue();
couponIssue.setStationId(stationId);
couponIssue.setCouponIssueId(couponIssueId);
//获取该领取方式的状态是否启用 1启用 0未启用
List couponIssuesList = couponService.selectCouponIssueList(couponIssue);
if(couponIssuesList !=null && couponIssuesList.size() >0 && couponIssuesList.get(0).getStatus().equals("1")){
resultMap.put("giveLimit", couponIssuesList.get(0).getGiveLimit());
CouponUserGiveCount couponUserGiveCount = new CouponUserGiveCount();
couponUserGiveCount.setStationId(stationId);
couponUserGiveCount.setUnionId(unionId);
couponUserGiveCount.setCouponIssueId(couponIssueId);
//用户能进入领取界面的次数
CouponUserGiveCount cgcInfo = couponService.selectCouponUserGiveCount(couponUserGiveCount);
if(cgcInfo !=null && cgcInfo.getIssueGiveCount() >= cgcInfo.getGiveCount()){
resultData = ResultData.error(CodeMsg.COUPON_GIVE_COUNT_MAX);
}else {
if(cgcInfo !=null){
//更新次数
Integer issueGiveCount = cgcInfo.getIssueGiveCount();
int i = issueGiveCount + 1;
couponUserGiveCount.setIssueGiveCount(i);
couponUserGiveCount.setUpdateTime(new Date());
couponService.updateCouponUserGiveCount(couponUserGiveCount);
}else {
//新增次数
couponUserGiveCount.setIssueGiveCount(1);
couponUserGiveCount.setCreteTime(new Date());
couponService.addCouponUserGiveCount(couponUserGiveCount);
}
//该领取方式能领取优惠券的时间类型
String availableControl = couponIssuesList.get(0).getAvailableControl();
switch (availableControl){
case "0":
List couponsList = this.selectCouponIssue(stationId, couponIssueId);
resultMap.put("couponsList", couponsList);
resultData = ResultData.success(resultMap);
break;
case "1":
String cycleDays_1 = couponIssuesList.get(0).getCycleDays();
if(!this.isActivityDay(availableControl, cycleDays_1)){
resultData = ResultData.error(CodeMsg.NOT_GIVE_COUPON_TIME);
}else {
List couponsList_1 = this.selectCouponIssue(stationId, couponIssueId);
resultMap.put("couponsList", couponsList_1);
resultData = ResultData.success(resultMap);
}
break;
case "2":
//String cycleDays_2 = couponIssuesList.get(0).getCycleDays();
if(!this.isActivityDay(availableControl, couponIssuesList.get(0).getCycleDays())){
resultData = ResultData.error(CodeMsg.NOT_GIVE_COUPON_TIME);
}else {
List couponsList_2 = this.selectCouponIssue(stationId, couponIssueId);
resultMap.put("couponsList", couponsList_2);
resultData = ResultData.success(resultMap);
}
break;
case "3":
String appointedDays_3 = couponIssuesList.get(0).getAppointedDays();
if(!this.isActivityDay(availableControl, appointedDays_3)){
resultData = ResultData.error(CodeMsg.NOT_GIVE_COUPON_TIME);
}else {
List couponsList_3 = this.selectCouponIssue(stationId, couponIssueId);
resultMap.put("couponsList", couponsList_3);
resultData = ResultData.success(resultMap);
}
break;
}
}
}else {
// -7
resultData = ResultData.error(CodeMsg.ISSUE_CLOSE);
}
}else {
resultData = ResultData.error(CodeMsg.NO_ENABLE_COUPON);
}
}else {
resultData = ResultData.error(CodeMsg.PARAMS_NUll);
}
}catch (Exception e){
e.printStackTrace();
logger.error("获取油站已发放的优惠券错误信息:" + e.getMessage());
resultData = ResultData.error(CodeMsg.SEARCH_FAIL);
}
return gson.toJson(resultData);
}
//油站所分发的优惠券
public List selectCouponIssue(Integer stationId, String couponIssueId){
//用户能进入领取界面的次数
Coupon coupon = new Coupon();
coupon.setStationId(stationId);
coupon.setCouponIssueId(couponIssueId);
//领取油站所分发的优惠券
List couponsList = couponService.selectStaGrantCouponList(coupon);
return couponsList;
}
//获取优惠券信息
@RequestMapping(value = "/selectCouponInfo", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "获取优惠券信息", httpMethod = "GET", notes = "获取优惠券信息")
public String selectCouponInfo(@ApiParam(value = "优惠券ID", required = true) @RequestParam Integer id){
Gson gson =new Gson();
ResultData resultData = null;
try {
UserCoupon coupon = new UserCoupon();
coupon.setId(id);
UserCoupon couponInfo = couponService.selectUserCouponInfo(coupon);
resultData = ResultData.success(couponInfo);
}catch (Exception e){
e.printStackTrace();
}
return gson.toJson(resultData);
}
/***
* 获取核销优惠券信息
* @param couponNo
* @return
*/
@RequestMapping(value = "/selectCouponVerificationInfo", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "获取核销优惠券信息", httpMethod = "GET", notes = "获取核销优惠券信息")
public String selectCouponVerificationInfo(@ApiParam(value = "核销优惠券码", required = true) @RequestParam String couponNo,
@ApiParam(value = "用户unionId", required = true) @RequestParam String unionId){
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
ResultData resultData = null;
try {
if(StringUtils.isNotBlank(couponNo) && StringUtils.isNotBlank(unionId)){
CouponVerificationUser couponVerificationUser = new CouponVerificationUser();
couponVerificationUser.setUnionId(unionId);
CouponVerificationUser cu = couponService.selectCouponVerificationUserInfo(couponVerificationUser);
if(cu !=null && cu.getStationId() !=null){
Integer stationId = cu.getStationId();
UserCoupon coupon = new UserCoupon();
coupon.setCouponNo(couponNo);
coupon.setUnionId(unionId);
UserCoupon couponInfo = couponService.selectUserCouponInfo(coupon);
if(couponInfo !=null){
String verification = couponInfo.getVerification();
StationInfo stationInfo = new StationInfo();
stationInfo.setStationId(cu.getStationId());
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
if(StringUtils.isNotBlank(stationInfos.getCouponFlag()) && stationInfos.getCouponFlag().equals("1")){
stationId = stationInfos.getGroupId();
}
boolean contains = verification.contains(stationId.toString());
if(contains){
//如果当前登录用户是异业端核销人员非加油站异业券核销
resultData = ResultData.success(couponInfo);
}else {
Integer stationIdCoupon = couponInfo.getStationId();
Integer stationIdVer = cu.getStationId();
if(stationIdVer.toString().equals(stationIdCoupon.toString())){
resultData = ResultData.success(couponInfo);
}else {
resultData = ResultData.error(CodeMsg.ERROR_VERIFICATION);
}
}
}else {
resultData = ResultData.error(CodeMsg.NO_COUPON);
}
}else {
resultData = ResultData.error(CodeMsg.NOT_COUPON_VERIFICATION_USER);
}
}else {
resultData = ResultData.error(CodeMsg.PARAMS_NUll);
}
}catch (Exception e){
e.printStackTrace();
}
return gson.toJson(resultData);
}
//获取客户所拥有的优惠券
@RequestMapping(value = "/selectUserCoupons", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "获取客户所拥有的优惠券", httpMethod = "GET", notes = "获取客户所拥有的优惠券")
public String selectUserCoupons(@ApiParam(value = "油站ID", required = true) @RequestParam Integer stationId,
@ApiParam(value = "用户unionId", required = true) @RequestParam String unionId,
@ApiParam(value = "优惠券状态couponIsUsed", required = true) @RequestParam String couponIsUsed,
@RequestParam int pageNum, @RequestParam int pageSize){
Gson gson =new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
ResultData resultData = null;
try {
if(stationId !=null && StringUtils.isNotBlank(unionId) && StringUtils.isNotBlank(couponIsUsed)){
StationInfo stationInfo = new StationInfo();
stationInfo.setStationId(stationId);
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
if(stationInfos !=null && stationInfos.getCouponEnabledFlag().equals("1") && Integer.valueOf(pageNum) !=null && Integer.valueOf(pageSize) !=null){
PageHelper.startPage(pageNum, pageSize);
UserCoupon userCoupon = new UserCoupon();
userCoupon.setStationId(stationId);
userCoupon.setCouponIsUsed(couponIsUsed);
userCoupon.setExpireFlag("0");
userCoupon.setCurrentTime(new Date());
//已过期
if(couponIsUsed.equals("2")){
userCoupon.setCouponIsUsed("0");
userCoupon.setExpireFlag("1");
}
if(stationInfos.getCouponFlag() !=null && stationInfos.getCouponFlag().equals("1")){
userCoupon.setStationId(stationInfos.getGroupId());
}
userCoupon.setUnionId(unionId);
List userCoupons = couponService.selectUserCoupons(userCoupon);
PageInfo pageInfo = new PageInfo(userCoupons);
resultData = ResultData.success(pageInfo);
}else {
resultData = ResultData.error(CodeMsg.NO_ENABLE_COUPON);
}
}else {
resultData = ResultData.error(CodeMsg.PARAMS_NUll);
}
}catch (Exception e){
e.printStackTrace();
//logger.error("获取客户所拥有的优惠券错误信息:" + e.getMessage());
}
return gson.toJson(resultData);
}
//用户领取优惠券
@RequestMapping(value = "/addUserCoupon", consumes = "application/json", method = RequestMethod.POST)
@ResponseBody
@Transactional
//@ApiOperation(value = "用户领取优惠券", httpMethod = "POST", notes = "用户领取优惠券")
public String addUserCoupon(@RequestBody CouponUserRequest couponUserRequest){
Gson gson = new Gson();
ResultData resultData = null;
try{
String unionId = couponUserRequest.getUnionId();
String couponIds = couponUserRequest.getCouponIds();
String couponIssueId = couponUserRequest.getCouponIssueId();
Integer stationId = couponUserRequest.getStationId();
logger.info("用户领取优惠券所需参数: unionId: "+ unionId+ "; 油站ID:" +stationId + "; 优惠券IDS:" + couponIds + "; 领取方式ID: " + couponIssueId);
StationInfo stationInfo = new StationInfo();
stationInfo.setStationId(stationId);
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
//油站是否开启优惠券功能
if(stationInfos !=null && stationInfos.getCouponEnabledFlag().equals("1")){
if(StringUtils.isNotBlank(couponIds)){
String str[] = couponIds.split(",");
List ids = Arrays.asList(str);
Coupon couponParam = new Coupon(); //查询优惠券参数
UserCoupon userCouponParam = new UserCoupon(); //用户优惠券新增参数
//返回前端参数
List successCouponList= new ArrayList<>(); //领取成功的优惠券
List couponNumNEList= new ArrayList<>(); //优惠券数量不足
List couponHoldNumMaxList= new ArrayList<>(); //用户持有优惠券数量达到最大值
List notClaimedCouponList= new ArrayList<>(); //用户未领取的优惠券
List couponReceiveNumList= new ArrayList<>(); //用户累计的优惠券
//获取领取方式信息
CouponIssue couponIssue = new CouponIssue();
couponIssue.setStationId(stationId);
if(stationInfos.getCouponFlag() !=null && stationInfos.getCouponFlag().equals("1")){
couponIssue.setStationId(stationInfos.getGroupId());
}
couponIssue.setCouponIssueId(couponIssueId);
List couponIssueList = couponService.selectCouponIssueList(couponIssue);
if(couponIssueList !=null && couponIssueList.size() ==1){
int couponSuccessNum =0; //用户优惠券领取成功张数 couponSuccess
for(int i=0; i 0) {
UserCoupon uc = new UserCoupon();
uc.setIssueId(couponIssueId);
uc.setStationId(stationId);
uc.setUnionId(unionId);
uc.setCouponId(coupon.getCouponId());
//获取该用户优惠券累计的张数
int userCouponCountSum = couponService.selectUserCouponCount(uc);
uc.setCouponIsUsed("0");
//获取该用户所持有此优惠券的张数,即未使用的优惠券
int userCouponCountNoUsed = couponService.selectUserCouponCount(uc);
//获取该用户
if(userCouponCountNoUsed < coupon.getCouponHoldNum()){
if(userCouponCountSum < coupon.getCouponReceiveNum()){
userCouponParam.setCouponIsUsed("0"); //是否使用:0、未使用;1、已使用;
long currentTimeMillis = System.currentTimeMillis();
String s = stationId + Long.toString(currentTimeMillis) + Math.round((Math.random() + 1) * 1000);
String s1 = CryptUtil.useMD5(s);
userCouponParam.setCouponNo(s1); //优惠券编码
userCouponParam.setUnionId(unionId); //用户unionId
userCouponParam.setIssueId(couponIssueId); //领取方式ID
userCouponParam.setCouponId(coupon.getCouponId()); //优惠券模板ID
userCouponParam.setStationId(stationId); //油站ID
userCouponParam.setCouponIsEffective("1"); //优惠券是否有效
userCouponParam.setGetCouponTime(new Date()); //优惠券领取时间
String effectiveTimeType = coupon.getEffectiveTimeType();
//'有效时间类型: 1,固定时间;2,领取后x天内有效'
switch (effectiveTimeType) {
case "1":
userCouponParam.setCouponEffectiveTime(coupon.getEffectiveTimeEnd()); //优惠券有效期截止时间
break;
case "2":
Calendar calendar = Calendar.getInstance();
calendar.setTime(userCouponParam.getGetCouponTime());
calendar.add(Calendar.DATE, coupon.getEffectiveDayNum()); //领取后多少天有效
userCouponParam.setCouponEffectiveTime(calendar.getTime()); //优惠券有效期截止时间
break;
}
if(couponService.addUserCoupon(userCouponParam) == 1) {
//更新该优惠券的领取数量
Coupon coupon_up = new Coupon();
coupon_up.setCouponId(couponId);
couponCumulativeNum = couponCumulativeNum + 1;
coupon_up.setCouponCumulativeNum(couponCumulativeNum);
couponService.updateCouponInfo(coupon_up);
//领取成功
successCouponList.add(couponId.toString());
//领取成功后次数 +1
couponSuccessNum++;
}
}else {
//用户累计领取已达到最大值
couponReceiveNumList.add(couponId.toString());
}
}else {
//用户持有数量超出
couponHoldNumMaxList.add(couponId.toString());
}
}else {
//优惠券数量不足
couponNumNEList.add(couponId.toString());
}
}
}else {
//未领取的优惠券
notClaimedCouponList.add(couponId.toString());
}
}
//领取成功
Map resultMap = new HashMap<>();
resultMap.put("successCouponList", successCouponList);
resultMap.put("couponNumNEList", couponNumNEList);
resultMap.put("couponHoldNumMaxList", couponHoldNumMaxList);
resultMap.put("notClaimedCouponList", notClaimedCouponList);
resultMap.put("couponReceiveNumList", couponReceiveNumList);
logger.info("用户领取到的优惠券:" + resultMap.toString());
//记录用户在该领取方式操作
CouponUserGiveCount couponUserGiveCount = new CouponUserGiveCount();
couponUserGiveCount.setStationId(stationId);
couponUserGiveCount.setUnionId(unionId);
couponUserGiveCount.setCouponIssueId(couponIssueId);
//用户能进入领取界面的次数
CouponUserGiveCount cgcInfo = couponService.selectCouponUserGiveCount(couponUserGiveCount);
if(cgcInfo !=null){
//更新次数
Integer issueGiveCount = cgcInfo.getIssueGiveCount();
int i = issueGiveCount + 1;
couponUserGiveCount.setIssueGiveCount(i);
couponUserGiveCount.setUpdateTime(new Date());
couponService.updateCouponUserGiveCount(couponUserGiveCount);
}else {
//新增次数
couponUserGiveCount.setIssueGiveCount(1);
couponUserGiveCount.setCreteTime(new Date());
couponService.addCouponUserGiveCount(couponUserGiveCount);
}
resultData = ResultData.success(resultMap);
}else {
resultData = ResultData.error(CodeMsg.NO_COUPON_ISSUE);
}
}else {
resultData = ResultData.success(CodeMsg.SUCCESS);
}
}else {
resultData = ResultData.error(CodeMsg.NO_ENABLE_COUPON);
}
}catch (Exception e){
e.printStackTrace();
//logger.error("用户领取优惠券错误信息:" + e.getMessage());
//resultData = ResultData.error(CodeMsg.INSERT_FAIL);
}
return gson.toJson(resultData);
}
//异业端核销优惠券,兑换券
@RequestMapping(value = "/findCouponVerificationUser", consumes = "application/json", method = RequestMethod.POST)
@ResponseBody
@Transactional
public String findCouponVerificationUser(@RequestBody CouponVerificationUser couponVerificationUser){
Gson gson =new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
ResultData resultData = null;
if(StringUtils.isNotBlank(couponVerificationUser.getMobilePhone()) && StringUtils.isNotBlank(couponVerificationUser.getUnionId())){
//手机号
String mobilePhone = couponVerificationUser.getMobilePhone();
SysUser sysUser = new SysUser();
sysUser.setPhonenumber(mobilePhone);
sysUser.setStatus("0");
sysUser.setDelFlag("0");
SysUser su = sysUserService.selectSysUser(sysUser);
if(su !=null){
if(su.getDelFlag().equals("0")){
if(su.getStatus().equals("0")){
CouponVerificationUser cu = couponService.selectCouponVerificationUserInfo(couponVerificationUser);
if(cu !=null){
//更新
couponService.updateCouponVerificationUser(couponVerificationUser);
}else {
//新增
couponVerificationUser.setCreateTime(new Date());
couponService.addCouponVerificationUser(couponVerificationUser);
}
resultData = ResultData.success("登陆成功");
}else {
resultData = ResultData.error(CodeMsg.USER_NOT_STATUS);
}
}else {
resultData = ResultData.error(CodeMsg.USER_NOT_EXSIST);
}
}else {
resultData = ResultData.error(CodeMsg.USER_NOT_EXSIST);
}
}else {
resultData = ResultData.error(CodeMsg.PARAMS_NUll);
}
return gson.toJson(resultData);
}
//异业端核销优惠券,兑换券
@RequestMapping(value = "/writeOffCoupon", consumes = "application/json", method = RequestMethod.POST)
@ResponseBody
@Transactional
public String writeOffCoupon(@RequestBody CouponVerification couponVerification){
Gson gson =new Gson();
ResultData resultData = null;
try {
if(couponVerification !=null && StringUtils.isNoneBlank(couponVerification.getCouponNo()) && StringUtils.isNoneBlank(couponVerification.getUnionId())){
String unionId = couponVerification.getUnionId();
//核销码
String couponNo = couponVerification.getCouponNo();
UserCoupon userCoupon = new UserCoupon();
userCoupon.setCouponNo(couponNo);
//查询当前兑换券是否存在
UserCoupon userCouponInfo = couponService.selectUserCouponInfo(userCoupon);
if(userCouponInfo !=null){
if(userCouponInfo.getCouponIsUsed().equals("0")){
//判断当前优惠券是否是异业券
if(userCouponInfo.getCouponType().equals("3")){
//核销人信息
CouponVerificationUser couponVerificationUser = new CouponVerificationUser();
couponVerificationUser.setUnionId(unionId);
CouponVerificationUser cu = couponService.selectCouponVerificationUserInfo(couponVerificationUser);
if(cu !=null && cu.getStationId() !=null){
//核销人员手机号
String mobilePhone = cu.getMobilePhone();
userCoupon.setMobilePhone(mobilePhone);
//当前核销人员的核销点
String verificationId = cu.getStationId().toString();
//异业券核销,使用sys_user中账户核销
StationInfo stationInfo = new StationInfo();
stationInfo.setStationId(cu.getStationId());
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
//当前异业券的核销站点
String verification = userCouponInfo.getVerification();
userCoupon.setVerificationTime(new Date()); //核销时间
Integer stationIdCoupon = userCouponInfo.getStationId(); //当前优惠券所在发放站点
//如果当前异业券有核销站点
if(StringUtils.isNotBlank(verification)){
//当前优惠券是否共享
if(cu.getJiBie()!=null){
String jiBie = cu.getJiBie();
//核销人员所在站点的级别
switch (jiBie){
case "1":
if(StringUtils.isNotBlank(stationInfos.getCouponFlag()) && stationInfos.getCouponFlag().equals("1")){
verificationId = stationInfos.getGroupId().toString();
}
break;
case "2":
if(StringUtils.isNotBlank(stationInfos.getCouponFlag()) && stationInfos.getCouponFlag().equals("1")){
//表示为集团下优惠券共享
verificationId = stationInfos.getStationId().toString();
}
break;
}
}
//是否能在该核销点核销
Integer stationIdVerification = cu.getStationId(); //核销人员所在核销点
if(verification.contains(verificationId) || stationIdVerification.toString().equals(stationIdCoupon.toString())){
userCoupon.setCouponIsUsed("1");
couponService.updateCouponUserInfo(userCoupon);
resultData = ResultData.success("核销成功!");
}else {
resultData = ResultData.error(CodeMsg.ERROR_VERIFICATION);
}
}else if(verificationId.equals(stationIdCoupon.toString())){
//如果当前异业券没有核销站点,则为油站设置自己兑换券
userCoupon.setCouponIsUsed("1");
couponService.updateCouponUserInfo(userCoupon);
resultData = ResultData.success("核销成功!");
}else {
//当前异业券不能在此异业端核销
resultData = ResultData.error(CodeMsg.ERROR_VERIFICATION);
}
}else {
//此人不是核销人员
resultData = ResultData.error(CodeMsg.NOT_COUPON_VERIFICATION_USER);
}
}else{
//不是兑换券
resultData = ResultData.error(CodeMsg.NOT_COUPON_VERIFICATION);
}
}else {
//该兑换券已被使用
resultData = ResultData.error(CodeMsg.COUPON_VERIFICATION_USED);
}
}else {
//没有此兑换券
resultData = ResultData.error(CodeMsg.NO_COUPON);
}
}else {
resultData = ResultData.error(CodeMsg.PARAMS_NUll);
}
}catch (Exception e){
e.printStackTrace();
}
return gson.toJson(resultData);
}
/***
* 获取已核销优惠券信息列表
* @param unionId
* @return
*/
@RequestMapping(value = "/selectCouponVerificationList", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "获取核销优惠券信息", httpMethod = "GET", notes = "获取核销优惠券信息")
public String selectCouponVerificationList(@ApiParam(value = "用户unionId", required = true) @RequestParam String unionId,
@RequestParam int pageNum, @RequestParam int pageSize) {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
ResultData resultData = null;
if(StringUtils.isNotBlank(unionId)){
CouponVerificationUser couponVerificationUser = new CouponVerificationUser();
couponVerificationUser.setUnionId(unionId);
CouponVerificationUser cu = couponService.selectCouponVerificationUserInfo(couponVerificationUser);
if(cu !=null && cu.getStationId() !=null){
UserCoupon userCoupon = new UserCoupon();
String jiBie = cu.getJiBie(); //核销用的级别
Integer stationId = cu.getStationId(); //核销人员所属站点
if(StringUtils.isNoneBlank(jiBie) && jiBie.equals("1")){
//级别为1的时候表示该登录人集团账号核销
StationInfo stationInfo = new StationInfo();
stationInfo.setStationId(stationId);
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
if(StringUtils.isNotBlank(stationInfos.getCouponFlag()) && stationInfos.getCouponFlag().equals("1")){
//表示集团下优惠券共享:如果为集团账号且共享优惠券 则判断当前核销人员所在站点的集团是否是该兑换券的集团
userCoupon.setGroupId(stationInfos.getGroupId());
}
}else {
//否则为2时,则表示为站点核销人员登录
userCoupon.setStationId(stationId);
}
userCoupon.setCouponType("3");
userCoupon.setCouponIsUsed("1");
PageHelper.startPage(pageNum, pageSize);
List userCoupons = couponService.selectCouponVerificationList(userCoupon);
PageInfo pageInfo = new PageInfo(userCoupons);
resultData = ResultData.success(pageInfo);
}else {
resultData = ResultData.error(CodeMsg.NOT_COUPON_VERIFICATION_USER);
}
}else {
resultData = ResultData.error(CodeMsg.PARAMS_NUll);
}
return gson.toJson(resultData);
}
/***
* //营销方案活动日优惠
* @param discountType 活动日时间类型
* @param discountDate 活动日时间字符串,格式:1,2,3,4,5
* @return
*/
public boolean isActivityDay(String discountType, String discountDate){
boolean boo= false;
if(discountDate !=null && discountDate !=""){
String currentTime = null; //当前时间
String[] discountDateArray = discountDate.split(",");
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date()); //获取当前时间
switch (discountType){
case "1": // 1.按周来
int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
day_Week= day_Week-1; //减一原因:数据库存的下标从零开始
currentTime = String.valueOf(day_Week);
break;
case "2": // 2.每月的 多少号
int day_month = calendar.get(Calendar.DAY_OF_MONTH);
day_month = day_month-1; //减一原因:数据库存的下标从零开始
currentTime = String.valueOf(day_month); //当前时间
break;
case "3": // 3.固定日期
currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
break;
}
//活动日优惠金额
for (String s : discountDateArray){
if(s.equals(currentTime)){
boo = true;
break;
}
}
}
return boo;
}
}