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

Commit 61410dee authored by 张国柄's avatar 张国柄

Sql调整;

添加券、列表、码表API;
parent 6bad8042
...@@ -124,7 +124,7 @@ create table candy_coupon_code ...@@ -124,7 +124,7 @@ create table candy_coupon_code
comment varchar(255) comment varchar(255)
) engine = InnoDB comment '券码信息'; ) engine = InnoDB comment '券码信息';
create unique index uidx_candy_coupon_code_id on candy_coupon_code (ccode); create unique index uidx_candy_coupon_code_id on candy_coupon_code (ccode, coupon_id);
# 用户券信息 # 用户券信息
......
package com.liquidnet.service.candy.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "CandyCouponRuleBuildParam", description = "添加券规则入参")
@Data
public class CandyCouponRuleBuildParam {
@ApiModelProperty(required = true, value = "适用范围[100-全场|90-演出|91-场次|92-票|80-商品|81-款式]", allowableValues = "100,90,91,92,80,81")
private Integer useScope;
@ApiModelProperty(required = true, value = "适用名称", allowableValues = "适用名称")
private String busiName;
@ApiModelProperty(required = false, value = "适用ID", allowableValues = "适用ID")
private String busiId;
}
...@@ -7,6 +7,7 @@ import lombok.Data; ...@@ -7,6 +7,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "CandyMgtCouponBuildParam", description = "新建券入参") @ApiModel(value = "CandyMgtCouponBuildParam", description = "新建券入参")
@Data @Data
...@@ -59,6 +60,10 @@ public class CandyMgtCouponBuildParam { ...@@ -59,6 +60,10 @@ public class CandyMgtCouponBuildParam {
//private String comment; //private String comment;
@ApiModelProperty(required = true, value = "适用规则列表", dataType = "List")
private List<CandyCouponRuleBuildParam> couponRuleList;
//private String mcouponId; //private String mcouponId;
//private String couponId; //private String couponId;
//private Integer state; //private Integer state;
......
package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.entity.SysRole;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponCodeAdminService;
import com.liquidnet.service.candy.dto.admin.CandyCouponCodeListParam;
import com.liquidnet.service.candy.entity.CandyCouponCode;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Api(tags = "券码管理")
@Slf4j
@Controller
@RequestMapping("candy/coupon/code")
public class CandyCouponCodeAdminController extends BaseController {
private String prefix = "zhengzai/candy/coupon/code";
@Autowired
private ICandyCouponCodeAdminService candyCouponCodeAdminService;
@RequiresPermissions("candy:coupon:code:view")
@GetMapping()
public String role()
{
return prefix + "/code";
}
@RequiresPermissions("candy:coupon:code:list")
@PostMapping("list")
@ResponseBody
public TableDataInfo list(CandyCouponCodeListParam listParam)
{
startPage();
LambdaQueryWrapper<CandyCouponCode> lambdaQuery = Wrappers.lambdaQuery(CandyCouponCode.class);
lambdaQuery.eq(CandyCouponCode::getCouponId, listParam.getCouponId()).eq(CandyCouponCode::getState, listParam.getState());
List<CandyCouponCode> list = candyCouponCodeAdminService.list(lambdaQuery);
return getDataTable(list);
}
}
package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.liquidnet.client.admin.common.annotation.Log;
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.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.DateUtils;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyMgtCoupon;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
@Api(tags = "券发放管理")
@Slf4j
@Controller
@RequestMapping("candy/coupon/mgt")
public class CandyMgtCouponController extends BaseController {
private final String prefix = "zhengzai/candy/coupon/mgt";
@Autowired
private ICandyMgtCouponAdminService candyMgtCouponAdminService;
@Autowired
private ICandyCouponAdminService candyCouponAdminService;
@RequiresPermissions("candy:coupon:mgt:view")
@GetMapping()
public String coupon(@RequestParam Integer couType) {
return prefix + "/coupon" + couType;
}
@RequiresPermissions("candy:coupon:mgt:list")
@PostMapping("list")
@ResponseBody
public TableDataInfo list(CandyMgtCouponListParam listParam) {
startPage();
List<CandyMgtCouponInfoDto> list = candyMgtCouponAdminService.listForMgtCouponInfoDto(listParam);
return getDataTable(list);
}
@GetMapping("add")
public String add() {
return prefix + "/add";
}
@ApiOperation(value = "新建券")
@RequiresPermissions("candy:coupon:mgt:add")
@Log(title = "券发放管理", businessType = BusinessType.INSERT)
@PostMapping("add")
@ResponseBody
public AjaxResult addSave(@Validated CandyMgtCouponBuildParam buildParam) {
BigDecimal discount = null, valFace = null, valOver = null, valMinus = null;
Integer couType = buildParam.getCouType(),
validity = buildParam.getValidity(),
redeemValidity = buildParam.getRedeemValidity();
LocalDateTime nowTime = LocalDateTime.now(),
redeemStart = null, redeemStop = null, effectAt, expireAt,
eventAt = LocalDateTime.parse(buildParam.getEventAt(), DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS));
switch (couType) {// TODO: 2021/8/20 校验
case 1:// 代金券
valFace = buildParam.getValFace();
break;
case 2:// 满减券
valOver = buildParam.getValOver();
valMinus = buildParam.getValMinus();
break;
case 3:// 兑换券
redeemStart = eventAt.with(LocalTime.MIN);
redeemStop = eventAt.plusDays(redeemValidity).withHour(23).withMinute(59).withSecond(59);
break;
case 4:// 折扣券
discount = buildParam.getDiscount();
break;
default:
log.warn("Invalid operation[buildParam.couType={}]", couType);
return this.error(AjaxResult.Type.WARN, "券类型无效");
}
effectAt = eventAt.with(LocalTime.MIN);
expireAt = eventAt.plusDays(validity).withHour(23).withMinute(59).withSecond(59);
String eventLimit = null, operator = ShiroUtils.getLoginName();
if (buildParam.getEventType() == 2) {// 指定用户手机号
eventLimit = buildParam.getEventLimit().trim();
// TODO: 2021/8/20 正则校验手机号字符串
if (StringUtils.isEmpty(eventLimit)) {
return this.error(AjaxResult.Type.WARN, "请指定手机号");
}
}
CandyCoupon initCoupon = new CandyCoupon();
initCoupon.setCouponId(IDGenerator.nextMilliId());
initCoupon.setState(1);
initCoupon.setTitle(buildParam.getTitle());
initCoupon.setLabel(buildParam.getLabel());
initCoupon.setNotice(buildParam.getNotice());
initCoupon.setExclusive(0);
initCoupon.setBusiType(buildParam.getBusiType());
initCoupon.setCouType(couType);
initCoupon.setBindType(buildParam.getBindType());
initCoupon.setDiscount(discount);
initCoupon.setValFace(valFace);
initCoupon.setValOver(valOver);
initCoupon.setValMinus(valMinus);
initCoupon.setOverlay(buildParam.getOverlay());
initCoupon.setValidity(validity);
initCoupon.setRedeemValidity(redeemValidity);
initCoupon.setRedeemStart(redeemStart);
initCoupon.setRedeemStop(redeemStop);
initCoupon.setEffectAt(effectAt);
initCoupon.setExpireAt(expireAt);
initCoupon.setOperator(operator);
initCoupon.setCreatedAt(nowTime);
CandyMgtCoupon initMgtCoupon = new CandyMgtCoupon();
initMgtCoupon.setMcouponId(IDGenerator.nextMilliId());
initMgtCoupon.setCouponId(initCoupon.getCouponId());
initMgtCoupon.setState(0);
initMgtCoupon.setEventAmt(buildParam.getEventAmt());
initMgtCoupon.setEventType(buildParam.getEventType());
initMgtCoupon.setEventLimit(eventLimit);
initMgtCoupon.setEventAt(eventAt);
initMgtCoupon.setOperator(operator);
initMgtCoupon.setCreatedAt(nowTime);
candyMgtCouponAdminService.saveMgtCouponInfo(initCoupon, initMgtCoupon);
return toAjax(true);
}
@GetMapping("code/{couponId}")
public String code(@PathVariable("couponId") String couponId, ModelMap mmap) {
mmap.put("couponId", couponId);
return prefix + "/code";
}
@RequiresPermissions("candy:coupon:mgt:code:list")
@PostMapping("codeList")
@ResponseBody
public TableDataInfo codeList(CandyMgtCouponListParam listParam) {
startPage();
return getDataTable(null);
}
}
<!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('角色列表')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="role-form">
<div class="select-list">
<ul>
<li>
角色名称:<input type="text" name="roleName"/>
</li>
<li>
权限字符:<input type="text" name="roleKey"/>
</li>
<li>
角色状态:<select name="status" th:with="type=${@dict.getType('sys_normal_disable')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li class="select-time">
<label>创建时间: </label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>
</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-success" onclick="$.operate.add()" shiro:hasPermission="system:role:add">
<i class="fa fa-plus"></i> 新增
</a>
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:role:edit">
<i class="fa fa-edit"></i> 修改
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:role:remove">
<i class="fa fa-remove"></i> 删除
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export">
<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 editFlag = [[${@permission.hasPermi('system:role:edit')}]];
var removeFlag = [[${@permission.hasPermi('system:role:remove')}]];
var prefix = ctx + "system/role";
$(function() {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
sortName: "roleSort",
modalName: "角色",
columns: [{
checkbox: true
},
{
field: 'roleId',
title: '角色编号'
},
{
field: 'roleName',
title: '角色名称',
sortable: true
},
{
field: 'roleKey',
title: '权限字符',
sortable: true
},
{
field: 'roleSort',
title: '显示顺序',
sortable: true
},
{
visible: editFlag == 'hidden' ? false : true,
title: '角色状态',
align: 'center',
formatter: function (value, row, index) {
return statusTools(row);
}
},
{
field: 'createTime',
title: '创建时间',
sortable: true
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.roleId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i>删除</a> ');
var more = [];
more.push("<a class='btn btn-default btn-xs " + editFlag + "' href='javascript:void(0)' onclick='authDataScope(" + row.roleId + ")'><i class='fa fa-check-square-o'></i>数据权限</a> ");
more.push("<a class='btn btn-default btn-xs " + editFlag + "' href='javascript:void(0)' onclick='authUser(" + row.roleId + ")'><i class='fa fa-user'></i>分配用户</a>");
actions.push('<a tabindex="0" class="btn btn-info btn-xs" role="button" data-container="body" data-placement="left" data-toggle="popover" data-html="true" data-trigger="hover" data-content="' + more.join('') + '"><i class="fa fa-chevron-circle-right"></i>更多操作</a>');
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 角色管理-分配数据权限 */
function authDataScope(roleId) {
var url = prefix + '/authDataScope/' + roleId;
$.modal.open("分配数据权限", url);
}
/* 角色管理-分配用户 */
function authUser(roleId) {
var url = prefix + '/authUser/' + roleId;
$.modal.openTab("分配用户", url);
}
/* 角色状态显示 */
function statusTools(row) {
if (row.status == 1) {
return '<i class=\"fa fa-toggle-off text-info fa-2x\" onclick="enable(\'' + row.roleId + '\')"></i> ';
} else {
return '<i class=\"fa fa-toggle-on text-info fa-2x\" onclick="disable(\'' + row.roleId + '\')"></i> ';
}
}
/* 角色管理-停用 */
function disable(roleId) {
$.modal.confirm("确认要停用角色吗?", function() {
$.operate.post(prefix + "/changeStatus", { "roleId": roleId, "status": 1 });
})
}
/* 角色管理启用 */
function enable(roleId) {
$.modal.confirm("确认要启用角色吗?", function() {
$.operate.post(prefix + "/changeStatus", { "roleId": roleId, "status": 0 });
})
}
</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('代金券')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="role-form">
<div class="select-list">
<ul>
<li>
角色名称:<input type="text" name="roleName"/>
</li>
<li>
权限字符:<input type="text" name="roleKey"/>
</li>
<li>
角色状态:<select name="status" th:with="type=${@dict.getType('sys_normal_disable')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li class="select-time">
<label>创建时间: </label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>
</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-success" onclick="$.operate.add()" shiro:hasPermission="candy:coupon:mgt:add">
<i class="fa fa-plus"></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 couponCodeListFlag = [[${@permission.hasPermi('system:role:edit')}]];
var prefix = ctx + "candy/coupon/mgt";
$(function() {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
// updateUrl: prefix + "/edit/{id}",
// removeUrl: prefix + "/remove",
// exportUrl: prefix + "/export",
sortName: "createdAt",
modalName: "发放记录",
columns: [{
checkbox: true
},
{
field: 'valFace',
title: '金额'
},
{
field: 'eventAmt',
title: '数量',
},
{
field: 'bindType',
title: '类型',
sortable: true
},
{
field: 'busiType',
title: '适用范围',
sortable: true
},
{
field: 'title',
title: '标题',
},
{
field: 'notice',
title: '描述',
},
{
field: 'operator',
title: '创建人',
},
{
field: 'createdAt',
title: '生成时间',
sortable: true
},
{
field: 'expireAt',
title: '失效时间',
sortable: true
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push("<a class='btn btn-default btn-xs " + couponCodeListFlag + "' href='javascript:void(0)' onclick='authUser(" + row.roleId + ")'><i class='fa fa-user'></i></a>");
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 券码列表 */
function couponCodeList(couponId) {
var url = prefix + '/code/' + couponId;
$.modal.openTab("查看码列表", url);
}
</script>
</body>
</html>
\ No newline at end of file
package com.liquidnet.client.admin.zhengzai.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.entity.CandyCoupon;
public interface ICandyCouponAdminService extends IService<CandyCoupon> {
}
package com.liquidnet.client.admin.zhengzai.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.entity.CandyCouponCode;
public interface ICandyCouponCodeAdminService extends IService<CandyCouponCode> {
}
...@@ -3,11 +3,14 @@ package com.liquidnet.client.admin.zhengzai.candy.service; ...@@ -3,11 +3,14 @@ package com.liquidnet.client.admin.zhengzai.candy.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto; import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam; import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyMgtCoupon; import com.liquidnet.service.candy.entity.CandyMgtCoupon;
import java.util.List; import java.util.List;
public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> { public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> {
void saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon);
List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam); List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam);
} }
package com.liquidnet.client.admin.zhengzai.candy.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.mapper.CandyCouponMapper;
import org.springframework.stereotype.Service;
@Service
public class CandyCouponAdminServiceImpl extends ServiceImpl<CandyCouponMapper, CandyCoupon> implements ICandyCouponAdminService {
}
package com.liquidnet.client.admin.zhengzai.candy.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponCodeAdminService;
import com.liquidnet.service.candy.entity.CandyCouponCode;
import com.liquidnet.service.candy.mapper.CandyCouponCodeMapper;
import org.springframework.stereotype.Service;
@Service
public class CandyCouponCodeAdminServiceImpl extends ServiceImpl<CandyCouponCodeMapper, CandyCouponCode> implements ICandyCouponCodeAdminService {
}
...@@ -2,14 +2,17 @@ package com.liquidnet.client.admin.zhengzai.candy.service.impl; ...@@ -2,14 +2,17 @@ package com.liquidnet.client.admin.zhengzai.candy.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService; import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto; import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam; import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyMgtCoupon; import com.liquidnet.service.candy.entity.CandyMgtCoupon;
import com.liquidnet.service.candy.mapper.CandyCouponMapper; import com.liquidnet.service.candy.mapper.CandyCouponMapper;
import com.liquidnet.service.candy.mapper.CandyMgtCouponMapper; import com.liquidnet.service.candy.mapper.CandyMgtCouponMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
...@@ -21,6 +24,16 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa ...@@ -21,6 +24,16 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
@Autowired @Autowired
private CandyCouponMapper candyCouponMapper; private CandyCouponMapper candyCouponMapper;
@Override
@Transactional
public void saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon) {
int insert = candyCouponMapper.insert(initCoupon);
insert += candyMgtCouponMapper.insert(initMgtCoupon);
if (insert < 2) {
throw new LiquidnetServiceException();
}
}
@Override @Override
public List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam) { public List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam) {
return candyMgtCouponMapper.selectMultiForMgtCouponInfoDto(listParam); return candyMgtCouponMapper.selectMultiForMgtCouponInfoDto(listParam);
......
...@@ -99,7 +99,7 @@ create table candy_coupon_code ...@@ -99,7 +99,7 @@ create table candy_coupon_code
comment varchar(255) comment varchar(255)
) engine = InnoDB comment '券码信息'; ) engine = InnoDB comment '券码信息';
create unique index uidx_candy_coupon_code_id on candy_coupon_code (ccode); create unique index uidx_candy_coupon_code_id on candy_coupon_code (ccode, coupon_id);
# 用户券信息 # 用户券信息
......
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