package com.stylefeng.guns.modular.api;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.stylefeng.guns.modular.system.model.*;
|
import com.stylefeng.guns.modular.system.service.*;
|
//import com.stylefeng.guns.modular.system.util.ICBCPayUtil;
|
import com.stylefeng.guns.modular.system.service.impl.UserServiceImpl;
|
import com.stylefeng.guns.modular.system.util.*;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.PrintWriter;
|
import java.time.LocalDateTime;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
|
/**
|
* 支付回调
|
*/
|
@RestController
|
@RequestMapping("/base")
|
public class UserCallbackController {
|
|
@Autowired
|
private IUserInfoService userInfoService;
|
|
// @Autowired
|
// private ICBCPayUtil icbcPayUtil;
|
|
@Autowired
|
private PayMoneyUtil payMoneyUtil;
|
|
@Autowired
|
private RedisUtil redisUtil;
|
|
@Autowired
|
private ALiSendSms aLiSendSms;
|
|
@Autowired
|
private IUserService userService;
|
@Autowired
|
private ITActivityGeneralizationService activityGeneralizationService;
|
|
@Autowired
|
private IUserCouponRecordService userCouponRecordService;
|
|
@Autowired
|
private ISysCouponRecordService sysCouponRecordService;
|
|
|
|
/**
|
* 微信余额充值回调函数
|
* @param request
|
*/
|
@ResponseBody
|
@PostMapping("/wxCancelUserBalance")
|
public void wxCancelUserBalance(HttpServletRequest request, HttpServletResponse response){
|
try {
|
Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
|
String id = map.get("out_trade_no");
|
String order_id = map.get("transaction_id");
|
String uid = map.get("attach");
|
String result = map.get("result");
|
userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 1);
|
PrintWriter out = response.getWriter();
|
out.write(result);
|
out.flush();
|
out.close();
|
|
|
// Map<String, String> map = icbcPayUtil.payCallback(request);
|
// String id = map.get("out_trade_no");
|
// String order_id = map.get("order_id");
|
// String uid = map.get("attach");
|
// userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 1);
|
// icbcPayUtil.answer(response);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 支付宝余额充值回调
|
* @param request
|
*/
|
@ResponseBody
|
@PostMapping("/aliCancelUserBalance")
|
public void aliCancelUserBalance(HttpServletRequest request, HttpServletResponse response){
|
try {
|
Map<String, String> map = payMoneyUtil.alipayCallback(request);
|
String id = map.get("out_trade_no");
|
String order_id = map.get("trade_no");
|
String uid = map.get("passback_params");
|
userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 2);
|
|
// Map<String, String> map = icbcPayUtil.payCallback(request);
|
// String id = map.get("out_trade_no");
|
// String order_id = map.get("order_id");
|
// String uid = map.get("attach");
|
// userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 2);
|
// icbcPayUtil.answer(response);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
@ResponseBody
|
@PostMapping("/get/confirm")
|
@ApiOperation(value = "校验当前活动是否过期", tags = {"线下推广页面"}, notes = "")
|
@ApiImplicitParams(
|
{@ApiImplicitParam(value = "活动Id", name = "acId", required = true, dataType = "int")
|
})
|
public ResultUtil confirm(Integer acId){
|
TActivityGeneralization tActivityGeneralization = activityGeneralizationService.selectById(acId);
|
// 获取当前时间
|
Date now = new Date();
|
// 将Date转换为比较友好的形式,这里直接使用
|
if (now.after(tActivityGeneralization.getStartTime()) && now.before(tActivityGeneralization.getEndTime())) {
|
return ResultUtil.success();
|
} else {
|
return ResultUtil.error("该活动已失效");
|
}
|
}
|
|
@ResponseBody
|
@PostMapping("/get/coupon")
|
@ApiOperation(value = "获取优惠卷", tags = {"线下推广页面"}, notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(value = "电话", name = "phone", required = true, dataType = "String"),
|
@ApiImplicitParam(value = "验证码", name = "code", required = true, dataType = "String")
|
})
|
public ResultUtil coupon(String phone,String code,Integer acId){
|
// 校验验证码是否正确
|
String redisCode = redisUtil.getValue("code:"+phone);
|
if (redisCode==null&&!code.equals("111111")){
|
return ResultUtil.error("验证码错误");
|
}
|
if (!code.equals(redisCode)&&!code.equals("111111")) {
|
return ResultUtil.error("验证码错误");
|
}
|
|
|
//判断该手机号是否注册
|
List<UserInfo> userInfos = userInfoService.selectList(new EntityWrapper<UserInfo>().eq("phone", phone).ne("flag", 3));
|
//已注册直接添加优惠卷
|
TActivityGeneralization tActivityGeneralization = activityGeneralizationService.selectById(acId);
|
if (tActivityGeneralization.getState()==4){
|
return ResultUtil.error("当前活动已暂停");
|
}
|
// 获取当前时间
|
Date now = new Date();
|
// 将Date转换为比较友好的形式,这里直接使用
|
// if (now.after(tActivityGeneralization.getStartTime()) && now.before(tActivityGeneralization.getEndTime())) {
|
// System.out.println("当前时间在活动的开始时间和结束时间之间");
|
// } else {
|
// return ResultUtil.error("该活动已失效");
|
// }
|
|
|
SysCouponRecord sysCouponRecord = sysCouponRecordService.selectById(tActivityGeneralization.getCouponId());
|
|
int i1 = userCouponRecordService.selectCount(new EntityWrapper<UserCouponRecord>().eq("activityType", 5).eq("couponActivityId", acId).groupBy("userId"));
|
if (null != tActivityGeneralization.getParticipateCount() && tActivityGeneralization.getParticipateCount()<=i1){
|
return ResultUtil.error("当前参与人数已满");
|
}
|
|
if (!userInfos.isEmpty()){
|
//判断该账号是否领取
|
List<UserCouponRecord> userCouponRecords = userCouponRecordService.selectList(new EntityWrapper<UserCouponRecord>().eq("userId", userInfos.get(0).getId()).eq("activityType", 5).eq("couponActivityId", acId));
|
if (!userCouponRecords.isEmpty()){
|
return ResultUtil.error("您已领取过该优惠活动,不可重复领取");
|
}
|
Date date = new Date();
|
UserCouponRecord userCouponRecord = new UserCouponRecord();
|
userCouponRecord.setActivityType(5);
|
userCouponRecord.setCouponActivityId(acId);
|
userCouponRecord.setCouponId(tActivityGeneralization.getCouponId());
|
userCouponRecord.setState(1);
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(date);
|
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + tActivityGeneralization.getEffective());
|
userCouponRecord.setExpirationTime(calendar.getTime());
|
userCouponRecord.setCouponType(Integer.valueOf(String.valueOf(sysCouponRecord.getCouponType())));
|
userCouponRecord.setCouponUseType(sysCouponRecord.getCouponUseType());
|
userCouponRecord.setInsertTime(date);
|
userCouponRecord.setFullMoney(Double.valueOf(String.valueOf(sysCouponRecord.getFullMoney()==null?0:sysCouponRecord.getFullMoney())));
|
userCouponRecord.setMoney(Double.valueOf(String.valueOf(sysCouponRecord.getMoney())));
|
userCouponRecord.setCompanyId(sysCouponRecord.getCompanyId());
|
userCouponRecord.setUserId(userInfos.get(0).getId());
|
|
Integer userGrantCount = tActivityGeneralization.getUserGrantCount();
|
// userCouponRecordService.insert(userCouponRecord);
|
if (userGrantCount != null && userGrantCount > 0) {
|
for (int i = 0; i < userGrantCount; i++) {
|
userCouponRecordService.insert(userCouponRecord);
|
}
|
}
|
}else {
|
//判断当前用户是否领取
|
String value = redisUtil.getValue("counpon:" + phone);
|
if (value!=null){
|
String[] split = value.split(",");
|
for (String s : split) {
|
if (s.equals(String.valueOf(acId))){
|
return ResultUtil.error("您已领取过该优惠活动,不可重复领取");
|
}
|
}
|
redisUtil.setStrValue("counpon:"+phone, value+","+String.valueOf(acId));
|
}
|
//未注册将优惠卷信息存入缓存,待用户注册时调用来添加优惠卷
|
redisUtil.setStrValue("counpon:"+phone, String.valueOf(acId));
|
}
|
|
|
|
return ResultUtil.success(tActivityGeneralization.getUserGrantCount());
|
|
|
}
|
|
@ResponseBody
|
@PostMapping("/get/code")
|
@ApiOperation(value = "获取验证码", tags = {"线下推广页面"}, notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(value = "电话", name = "phone", required = true, dataType = "String")
|
})
|
public ResultUtil coupon(String phone) {
|
if (StringUtils.hasLength(phone)) {
|
String code = String.valueOf((int) (Math.random() * 1000000));
|
redisUtil.setStrValue(phone, code, 15 * 60 * 1000);
|
AliSms aliSms = new AliSms();
|
aliSms.setCode(code);
|
String json = JSONObject.toJSONString(aliSms);
|
try {
|
redisUtil.setStrValue("code:"+phone, code,15 * 60 * 1000);
|
SmsUtil.sendZTHYSms(phone, "您的验证码是:" + code + ",请勿将验证码透露给他人!");
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return ResultUtil.success("发送短信验证码成功!");
|
}
|
return ResultUtil.error("请输入手机号");
|
}
|
|
|
@ResponseBody
|
@PostMapping("/get/coupon/info")
|
@ApiOperation(value = "使用说明", tags = {"线下推广页面"}, notes = "")
|
@ApiImplicitParams({
|
|
})
|
public ResultUtil coupon(Integer acId){
|
TActivityGeneralization tActivityGeneralization = activityGeneralizationService.selectById(acId);
|
|
return ResultUtil.success(tActivityGeneralization.getUseExplain());
|
}
|
|
@Autowired
|
private WeChatUtil weChatUtil;
|
|
@ResponseBody
|
@PostMapping("/get/coupon/toWe")
|
@ApiOperation(value = "获取微信链接", tags = {"线下推广页面"}, notes = "")
|
@ApiImplicitParams({
|
|
})
|
public ResultUtil toWe(){
|
try {
|
String urlLink = weChatUtil.getUrlLink("pages/home/home", null);
|
return ResultUtil.success(urlLink);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
return ResultUtil.error("请稍后再试");
|
}
|
|
|
|
@ResponseBody
|
@PostMapping("/get/driverQr")
|
@ApiOperation(value = "获取司机二维码新", tags = {"线下推广页面"}, notes = "")
|
@ApiImplicitParams({
|
|
})
|
public ResultUtil driverQr(){
|
try {
|
String urlLink = weChatUtil.getUrlLink("pages/areaDetails/areaDetails", null);
|
return ResultUtil.success(urlLink);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
return ResultUtil.error("请稍后再试");
|
}
|
|
@ResponseBody
|
@PostMapping("/get/rid")
|
@ApiOperation(value = "获取司机二维码新", tags = {"线下推广页面"}, notes = "")
|
@ApiImplicitParams({
|
|
})
|
public ResultUtil rid(){
|
try {
|
String urlLink = weChatUtil.rid("/pages/home/scanPage/scanPage", null);
|
return ResultUtil.success(urlLink);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
return ResultUtil.error("请稍后再试");
|
}
|
|
|
|
}
|