记得上下班打卡 | git大法好,push需谨慎

Commit e35ef3c2 authored by 胡佳晨's avatar 胡佳晨

Merge remote-tracking branch 'origin/dev-0712activity' into dev_0716_online

parents 227d909c 2fb1c431
...@@ -91,4 +91,8 @@ public class KylinRedisConst { ...@@ -91,4 +91,8 @@ public class KylinRedisConst {
public static final String REDIS_WQ_ORDER_FIX = "kylin:wq:order:";//纪录万青 订单填写快递地址 public static final String REDIS_WQ_ORDER_FIX = "kylin:wq:order:";//纪录万青 订单填写快递地址
public static final String REDIS_WQ_ORDER_EXPRESS = "kylin:wq:pxress:order:";//万青补偿快递vo 订单填写快递地址 public static final String REDIS_WQ_ORDER_EXPRESS = "kylin:wq:pxress:order:";//万青补偿快递vo 订单填写快递地址
public static final String ACTIVE_TICKET_AR_TICKET = "kylin:active:ar:ticket:";//互动券
public static final String ACTIVE_TICKET_AR_USER = "kylin:active:ar:user:";//互动券 绑定的用户
} }
package com.liquidnet.service.kylin.dto.param;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinAcitveParam implements Serializable {
private static final long serialVersionUID = 1L;
private Long mid;
/**
* 活动名称
*/
@ApiModelProperty(value = "活动名称")
private String activeName;
/**
* 券的数量
*/
@ApiModelProperty(value = "券的数量")
private Integer number;
/**
* activeId
*/
@ApiModelProperty(value = "activeId")
private String activeId;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime createdAt;
/**
* 修改时间
*/
@ApiModelProperty(value = "修改时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern=DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt;
/**
* 0未删除1已删除
*/
@ApiModelProperty(value = "0未删除1已删除")
private Integer delTag;
/**
* 演出id
*/
@ApiModelProperty(value = "演出id")
private String performanceId;
}
package com.liquidnet.service.kylin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.kylin.dao.KylinAcitve;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
public interface IKylinAcitveService extends IService<KylinAcitve> {
boolean addKylinAcitve(KylinAcitve kylinAcitve);
List<KylinAcitve> pageKylinAcitve(int pageSize, int pageNumber);
}
package com.liquidnet.service.kylin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.kylin.dao.KylinTicketActive;
import java.util.List;
/**
* <p>
* 跟活动绑定的券 服务类
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
public interface IKylinTicketActiveService extends IService<KylinTicketActive> {
List<KylinTicketActive> pageKylinAcitve(int pageSize, int pageNumber, String activeId);
}
...@@ -19,6 +19,7 @@ public class LocalAdminController extends BaseController ...@@ -19,6 +19,7 @@ public class LocalAdminController extends BaseController
private final String stonePrefix = "zhengzai/stone"; private final String stonePrefix = "zhengzai/stone";
private final String storePrefix = "zhengzai/store"; private final String storePrefix = "zhengzai/store";
private final String smilePrefix = "zhengzai/smile"; private final String smilePrefix = "zhengzai/smile";
private final String activityPrefix = "zhengzai/sweet";
@Value("${liquidnet.client.admin.platformUrl}") @Value("${liquidnet.client.admin.platformUrl}")
private String platformUrl; private String platformUrl;
...@@ -184,5 +185,20 @@ public class LocalAdminController extends BaseController ...@@ -184,5 +185,20 @@ public class LocalAdminController extends BaseController
{ {
return storePrefix + "/homeSet/newRecommended"; return storePrefix + "/homeSet/newRecommended";
} }
@GetMapping("/performanceActivity") // 活动关联券部分
public String performanceActivity()
{
return activityPrefix + "/performanceActivity/activityList";
}
@GetMapping("/createActivityModal") // 创建活动
public String createActivityModal()
{
return activityPrefix + "/performanceActivity/CreateActivity";
}
@GetMapping("/activityTicketList") // 活动关联券部分
public String activityTicketList()
{
return activityPrefix + "/performanceActivity/ticketList";
}
} }
package com.liquidnet.client.admin.web.controller.zhengzai.kylin;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.kylin.dto.ActiveTicketExportVo;
import com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinAcitveServiceImpl;
import com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinTicketActiveServiceImpl;
import com.liquidnet.service.kylin.dao.KylinAcitve;
import com.liquidnet.service.kylin.dto.param.KylinAcitveParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 前端控制器 活动有关的
* </p>
* @author zhangfuxin
* @since 2022-07-12
*/
@Api(tags = "活动和券的接口")
@RestController
@RequestMapping("/kylin-acitve")
public class KylinAcitveController extends BaseController {
@Autowired
private KylinAcitveServiceImpl kylinAcitveService;
@Autowired
private KylinTicketActiveServiceImpl kylinTicketActiveService;
@PostMapping("add")
@ApiOperation(value = "增加活动")
@ResponseBody
public AjaxResult add(@RequestBody KylinAcitveParam kylinAcitveParam) {
KylinAcitve kylinAcitve=new KylinAcitve();
BeanUtils.copyProperties(kylinAcitveParam,kylinAcitve);
kylinAcitveService.addKylinAcitve(kylinAcitve);
return AjaxResult.success("操作成功", "");
}
@PostMapping("pageActive")
@ApiOperation(value = "分页活动")
@ResponseBody
public TableDataInfo pageActive( @RequestParam(name = "pageSize", required = true) int pageSize,@RequestParam(name = "pageNum", required = true)int pageNum) {
//return AjaxResult.success(kylinAcitveService.pageKylinAcitve(pageSize,pageNum));
return getDataTable( kylinAcitveService.pageKylinAcitve(pageSize,pageNum));
}
@PostMapping("pageActiveTicket")
@ApiOperation(value = "分页券")
@ResponseBody
public TableDataInfo pageActiveTicket(@RequestParam(name = "pageSize", required = true) int pageSize, @RequestParam(name = "pageNum", required = true)int pageNum, @RequestParam(name = "activeId", required = true)String activeId) {
//return AjaxResult.success(kylinTicketActiveService.pageKylinAcitve(pageSize,pageNum,activeId));
return getDataTable( kylinTicketActiveService.pageKylinAcitve(pageSize,pageNum,activeId));
}
@PostMapping("exportTicket")
@ApiOperation(value = "导出券")
@ResponseBody
public AjaxResult exportTicket( @RequestParam(name = "activeId", required = true)String activeId,@RequestParam(name = "activeName", required = true)String activeName) {
List<ActiveTicketExportVo> list= kylinTicketActiveService.exportTicket(activeId);
if(list.size()>0){
ExcelUtil<ActiveTicketExportVo> util = new ExcelUtil(ActiveTicketExportVo.class);
return util.exportExcel(list, activeName + "");
}
return error("查无信息!");
}
}
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('积分明细')" />
<style>
body .layui-layer-btn {
display: none !important;
}
</style>
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<!-- <div class="col-sm-12 search-collapse">
<form id="coupon-form">
<div class="select-list">
<ul>
<input type="hidden" name="couType" th:value="${couType}"/>
<li>
<input type="text" name="mobile" placeholder="请输入手机号码"/>
</li>
<li>
状态:
<select name="status" id="">
<option value="0">全部</option>
<option value="1">正常</option>
<option value="2">冻结</option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div> -->
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-primary" onclick="exportSelected()" shiro:hasPermission="monitor:job:export">
创建活动
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<script th:inline="javascript">
var prefix = ctx + "stone/logs";
var prefix2 = ctx + "local";
var couType = [[${couType}]];
$(function () {
var options = {
url: '/kylin-acitve/pageActive',
pagination: true,
modalName: "积分",
columns: [
{
field: 'activeName',
title: '活动名称'
},
{
field: 'number',
title: '券数量'
},
{
title: '操作',
// align: 'center',
formatter: function (value, row, index) {
let dataArr = [];
dataArr.push(`<span class="btn btn-warning btn-xs" href="javascript:void(0)" onclick="opendTicketList('${row.activeId}')"><i class="fa fa-search"></i>查看券列表</span>`)
return dataArr.join(' ')
}
}]
};
$.table.init(options);
});
function opendTicketList (id) {
console.log(id, '121212121212activityTicketList')
var url = prefix2+'/activityTicketList?id=' + id;
$.modal.openTab("活动券列表", url);
}
function openModal(uid, status, title) {
$.modal.confirm(title, function() {
let data = {
status,
uid
}
$.ajax({
type: 'put',
url: prefix + '/change/status',
data,
success:function(e) {
$("button[name=refresh]").click();
}
})
});
}
// 导出数据
function exportSelected() {
// console.log(userIds.toString(), 'dataParam')
$.modal.open('创建活动', prefix2 + "/createActivityModal", 500, 260, cancel)
}
function cancel () {
console.log('确定按钮?')
}
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('创建活动')" />
<th:block th:include="include :: bootstrap-fileinput-css" />
<style>
.create_activity_box {
padding: 20px;
}
.items {
/* border: 1px dashed #ccc; */
border-radius: 10px;
padding: 12px;
margin-bottom: 10px;
}
label {
width: 80px;
text-align: right;
}
input {
width: 200px;
height: 30px;
}
.footer_btn {
margin-top: 20px;
display: flex;
justify-content: center;
align-items: center;
}
select {
height: 30px;
width: 200px;
}
</style>
</head>
<body>
<div class="create_activity_box">
<div class="items">
<label><span style="color: red;">*</span> 活动名称:</label>
<input type="text" id="activityName" />
</div>
<!-- <div class="items">
关联演出:
<select name="tagType">
<option value="">全部</option>
<option>1</option>
<option>1</option>
<option>1</option>
<option>1</option>
</select>
</div> -->
<div class="items">
<label><span style="color: red;">*</span> 券数量:</label>
<input type="text" id="ticketNum" />
</div>
<div class="footer_btn">
<button type="button" class="btn btn-success" onclick="save()">保存</button>
</div>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: bootstrap-fileinput-js" />
<th:block th:include="include :: bootstrap-suggest-js" />
<script th:inline="javascript">
var prefix2 = ctx + "local";
var platformUrl = [[${platformUrl}]];
let count = 0;
let compilationsId = '';
let createTime = '';
let cubeId = '';
let mid = '';
let updateTime = '';
function save () {
let activityName = $("#activityName").val();
let ticketNum = $("#ticketNum").val();
if (!activityName || !ticketNum) {
layer.msg('请将表单填写完整!')
}
let data = {
"activeId": "",
"activeName": activityName,
"delTag": 0,
"mid": 0,
"number": ticketNum,
"performanceId": ""
}
promiseMethods('/kylin-acitve/add', 'post', JSON.stringify(data), 'application/json').then((res) => {
layer.msg("保存成功!")
$.operate.successCallback(res);
})
}
function promiseMethods(url,type,data,contentType) {
return new Promise((resolve,reject)=>{
$.ajax({
url,
type,
data,
contentType,
success:function(res) {
resolve(res);
}
})
})
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('积分明细')" />
<style>
body .layui-layer-btn {
display: none !important;
}
</style>
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-warning" onclick="exportSelected()">
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<script th:inline="javascript">
var prefix = ctx + "stone/logs";
var prefix2 = ctx + "local";
var couType = [[${couType}]];
let id = ''
$(function () {
var options = {
url: '/kylin-acitve/pageActiveTicket',
pagination: true,
modalName: "积分",
queryParams: queryParams,
columns: [
{
field: 'code',
title: '券码'
},
{
field: 'state',
title: '券状态',
formatter: function (value, row) {
if (value == 1) {
return '未兑换'
} else if (value == 2) {
return '已兑换'
} else {
return '已失效'
}
}
},
{
field: 'redeemUid',
title: '使用者ID'
},
{
field: 'redeemAt',
title: '使用时间'
}]
};
$.table.init(options);
});
function queryParams(params) {
let name = 'id';
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
id = unescape(r[2]);
var search = $.table.queryParams(params);
search.activeId = id;
return search;
}
function opendTicketList (id) {
var url = prefix2+'activityTicketList?id=' + id;
$.modal.openTab("活动券列表", url);
}
// 导出数据
function exportSelected() {
$.ajax({
type: 'post',
url: '/kylin-acitve/exportTicket',
data: {activeId: id, activeName: 'dasdas'},
success: function (res) {
console.log(res, '????')
window.location.href = ctx + "common/download?fileName=" + encodeURI(res.msg) + "&delete=" + true;
}
})
}
</script>
</body>
</html>
\ No newline at end of file
package com.liquidnet.client.admin.zhengzai.kylin.dto;
import com.liquidnet.client.admin.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
@Data
public class ActiveTicketExportVo implements Serializable, Cloneable {
@Excel(name = "券码", cellType = Excel.ColumnType.STRING)
private String code;
/**
* 兑换码状态 1未兑换 2已兑换 3已失效
*/
@Excel(name = "兑换码状态", cellType = Excel.ColumnType.STRING)
private String state;
/**
* 兑换用户id
*/
@Excel(name = "兑换用户id", cellType = Excel.ColumnType.STRING)
private String redeemUid;
private static final ActiveTicketExportVo obj = new ActiveTicketExportVo();
public static ActiveTicketExportVo getNew() {
try {
return (ActiveTicketExportVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new ActiveTicketExportVo();
}
}
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.KylinAcitve;
import com.liquidnet.service.kylin.dao.KylinTicketActive;
import com.liquidnet.service.kylin.mapper.KylinAcitveMapper;
import com.liquidnet.service.kylin.mapper.KylinTicketActiveMapper;
import com.liquidnet.service.kylin.service.IKylinAcitveService;
import com.liquidnet.service.kylin.service.IKylinTicketActiveService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Service
public class KylinAcitveServiceImpl extends ServiceImpl<KylinAcitveMapper, KylinAcitve> implements IKylinAcitveService {
@Autowired
private KylinAcitveMapper kylinAcitveMapper;
@Autowired
private KylinTicketActiveMapper kylinTicketActiveMapper;
@Autowired
private IKylinTicketActiveService iKylinTicketActiveService;
@Autowired
RedisDataSourceUtil redisDataSourceUtil;
@Override
@Transactional
public boolean addKylinAcitve(KylinAcitve kylinAcitve) {
kylinAcitve.setActiveId(IDGenerator.nextSnowId());
kylinAcitve.setCreatedAt(LocalDateTime.now());
kylinAcitve.setUpdatedAt(LocalDateTime.now());
kylinAcitve.setDelTag(0);
//保存活动
kylinAcitveMapper.insert(kylinAcitve);
//创建券
iKylinTicketActiveService.saveBatch(getKylinTicketActive(kylinAcitve.getNumber(),kylinAcitve.getActiveId()));
return true;
}
@Override
public List<KylinAcitve> pageKylinAcitve(int pageSize, int pageNumber) {
PageHelper.startPage(pageNumber, pageSize);
LambdaQueryWrapper<KylinAcitve> queryWrapper = Wrappers.lambdaQuery(KylinAcitve.class);
List<KylinAcitve> list=kylinAcitveMapper.selectList(queryWrapper);
return list;
}
public List<KylinTicketActive> getKylinTicketActive(int number,String activeId){
List<KylinTicketActive> list = new ArrayList<>();
if(number>0){
for(int i=0;i<number;i++){
KylinTicketActive kylinTicketActive=new KylinTicketActive();
kylinTicketActive.setTicketId(IDGenerator.nextSnowId());
kylinTicketActive.setActivityId(activeId);
kylinTicketActive.setCode(IDGenerator.createCodeAz(3, 4, true));
kylinTicketActive.setState(1);
kylinTicketActive.setCreatedAt(LocalDateTime.now());
kylinTicketActive.setUpdatedAt(LocalDateTime.now());
kylinTicketActive.setDelTag(0);
list.add(kylinTicketActive);
//redis 存
redisDataSourceUtil.getRedisKylinUtil().set(KylinRedisConst.ACTIVE_TICKET_AR_TICKET+kylinTicketActive.getCode(),kylinTicketActive);
}
return list;
}
return null;
}
}
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.liquidnet.client.admin.zhengzai.kylin.dto.ActiveTicketExportVo;
import com.liquidnet.service.kylin.dao.KylinTicketActive;
import com.liquidnet.service.kylin.mapper.KylinTicketActiveMapper;
import com.liquidnet.service.kylin.service.IKylinTicketActiveService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 跟活动绑定的券 服务实现类
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Service
public class KylinTicketActiveServiceImpl extends ServiceImpl<KylinTicketActiveMapper, KylinTicketActive> implements IKylinTicketActiveService {
@Autowired
private KylinTicketActiveMapper kylinTicketActiveMapper;
@Override
public List<KylinTicketActive> pageKylinAcitve(int pageSize, int pageNumber, String activeId) {
PageHelper.startPage(pageNumber, pageSize);
LambdaQueryWrapper<KylinTicketActive> queryWrapper = Wrappers.lambdaQuery(KylinTicketActive.class);
queryWrapper.eq(KylinTicketActive::getActivityId,activeId);
List<KylinTicketActive> list=kylinTicketActiveMapper.selectList(queryWrapper);
return list;
}
public List<ActiveTicketExportVo> exportTicket(String activeId) {
LambdaQueryWrapper<KylinTicketActive> queryWrapper = Wrappers.lambdaQuery(KylinTicketActive.class);
queryWrapper.eq(KylinTicketActive::getActivityId,activeId);
List<KylinTicketActive> list=kylinTicketActiveMapper.selectList(queryWrapper);
List<ActiveTicketExportVo> voList = new ArrayList();
for (KylinTicketActive item : list) {
ActiveTicketExportVo activeTicketExportVo=ActiveTicketExportVo.getNew();
activeTicketExportVo.setCode(item.getCode());
activeTicketExportVo.setRedeemUid(item.getRedeemUid()==null?"":item.getRedeemUid());
if(item.getState()==1){
activeTicketExportVo.setState("未兑换");
}else if(item.getState()==2){
activeTicketExportVo.setState("已兑换");
}else{
activeTicketExportVo.setState("已失效");
}
voList.add(activeTicketExportVo);
}
return voList;
}
}
...@@ -184,4 +184,30 @@ public class IDGenerator { ...@@ -184,4 +184,30 @@ public class IDGenerator {
return str.toString()+"CH"; return str.toString()+"CH";
} }
/**
*创建互动兑换券的code
*/
public static String createCodeAz(int num,int sec,boolean bol) {
StringBuffer str = new StringBuffer();
for (int k=0;k<num;k++) {
for(int i=0;i < sec;i++){
int intVal=(int)(Math.random()*58+65);
if(intVal >= 91 && intVal <= 122){
i--;
}
if(intVal < 91 || intVal > 122){
if(intVal%2==0){
str.append((char)intVal);
}else{
str.append((int)(Math.random()*10));
}
}
}
if(bol){
str.append("-");
}
}
return str.toString()+"AZ";
}
} }
package com.liquidnet.service.kylin.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinAcitve implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 活动名称
*/
@TableField("activeName")
private String activeName;
/**
* 券的数量
*/
private Integer number;
/**
* activeId
*/
private String activeId;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 修改时间
*/
private LocalDateTime updatedAt;
/**
* 0未删除1已删除
*/
private Integer delTag;
/**
* 演出id
*/
private String performanceId;
}
package com.liquidnet.service.kylin.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 跟活动绑定的券
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinTicketActive implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 票id
*/
private String ticketId;
/**
* 兑换码
*/
private String code;
/**
* 兑换码状态 1未兑换 2已兑换 3已失效
*/
private Integer state;
/**
* 兑换用户id
*/
private String redeemUid;
/**
* 兑换时间
*/
private LocalDateTime redeemAt;
/**
* 活动id
*/
private String activityId;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 0未删除1已删除
*/
private Integer delTag;
}
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.KylinAcitve;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
public interface KylinAcitveMapper extends BaseMapper<KylinAcitve> {
}
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.KylinTicketActive;
/**
* <p>
* 跟活动绑定的券 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2022-07-12
*/
public interface KylinTicketActiveMapper extends BaseMapper<KylinTicketActive> {
}
package com.liquidnet.service.kylin.controller;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.service.impl.BannersServiceImpl;
import com.liquidnet.service.kylin.utils.DataUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* ar活动
* </p>
*
*/
@Api(tags = "ar活动有关接口")
@RestController
@RequestMapping("arActive")
@Slf4j
public class KylinArActiveController {
@Autowired
private BannersServiceImpl bannersServiceImpl;
@Autowired
private DataUtils dataUtils;
@PostMapping("getUserStatus")
@ApiOperation("查看用户是否绑定(0没有绑定、1绑定了、2失效,目前失效没有用)")
public ResponseDto<String> getUserStatus() {
String uid = CurrentUtil.getCurrentUid();
if(null==dataUtils.getUserStatus(uid)){
return ResponseDto.success("0");
}else{
return ResponseDto.success(dataUtils.getUserStatus(uid));
}
}
@PostMapping("exchangeCode")
@ApiOperation("兑换码兑换")
public ResponseDto<String> exchangeCode(@RequestParam(value = "code")String code) {
String uid = CurrentUtil.getCurrentUid();
if(null==dataUtils.getUserStatus(uid)){
return ResponseDto.success("0");
}else{
return ResponseDto.success(dataUtils.getUserStatus(uid));
}
}
}
...@@ -946,4 +946,9 @@ public class DataUtils { ...@@ -946,4 +946,9 @@ public class DataUtils {
} }
} }
// 获取用户状态
public String getUserStatus(String userId) {
return (String) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_USER+ userId);
}
} }
...@@ -28,7 +28,11 @@ import java.util.List; ...@@ -28,7 +28,11 @@ import java.util.List;
public class TestDataUtil { public class TestDataUtil {
@Autowired @Autowired
private DataUtils dataUtils; private DataUtils dataUtils;
@Test
public void test(){
System.out.println(dataUtils.getUserStatus("312"));
}
@Test @Test
public void myPerformancesList(){ public void myPerformancesList(){
......
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