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

Commit 35165b34 authored by 张国柄's avatar 张国柄

会员设置

parent efe54709
package com.liquidnet.service.adam.constant;
public class AdamRedisConst {
public static final String ADAM = "adam:";
public static final String PREFIX = "adam:";
public static final String VALID = ADAM.concat("valid:");
public static final String VALID_SMS_CODE_MOBILE = PREFIX.concat("valid:sms:code:mobile");
public static final String VALID_SMS_CODE_MOBILE = VALID.concat("sms:code:mobile");
public static final String IDENTITY_MOBILE = PREFIX.concat("identity:mobile:");
public static final String IDENTITY_THIRD_PARTY = PREFIX.concat("identity:third_party:");
public static final String IDENTITY = ADAM.concat("identity:");
public static final String INFO_TAGS_SEX = PREFIX.concat("info:tags:sex");
public static final String INFO_TAGS_MUSIC = PREFIX.concat("info:tags:music");
public static final String IDENTITY_MOBILE = IDENTITY.concat("mobile:");
public static final String IDENTITY_THIRD_PARTY = IDENTITY.concat("third_party:");
public static final String INFO_USER = PREFIX.concat("info:user:");
public static final String INFO_USER_MEMBER = PREFIX.concat("info:umember:");
public static final String INFO_REAL_NAME = PREFIX.concat("info:real_name:");
public static final String INFO_THIRD_PARTY = PREFIX.concat("info:third_party:");
public static final String INFO_ENTERS = PREFIX.concat("info:enters:");
public static final String INFO_ADDRESSES = PREFIX.concat("info:addresses:");
public static final String INFO = ADAM.concat("info:");
public static final String INFO_CERTIFICATION = PREFIX.concat("info:certification:");
public static final String INFO_TAGS_SEX = INFO.concat("tags:sex");
public static final String INFO_TAGS_MUSIC = INFO.concat("tags:music");
public static final String INFO_MEMBER_SIMPLE = PREFIX.concat("info:member:simple");
public static final String INFO_MEMBER_CATEGORY = PREFIX.concat("info:member:category:");
public static final String INFO_MEMBER_PRICE = PREFIX.concat("info:member:price:");
public static final String INFO_MEMBER_RIGHTS = PREFIX.concat("info:member:rights:");
public static final String INFO_MEMBER_AGREEMENT = PREFIX.concat("info:member:agreement");
public static final String INFO_USER = INFO.concat("user:");
public static final String INFO_USER_MEMBER = INFO.concat("umember:");
public static final String INFO_REAL_NAME = INFO.concat("real_name:");
public static final String INFO_THIRD_PARTY = INFO.concat("third_party:");
public static final String INFO_ENTERS = INFO.concat("enters:");
public static final String INFO_ADDRESSES = INFO.concat("addresses:");
public static final String INFO_CERTIFICATION = INFO.concat("certification:");
public static final String INFO_MEMBER_SIMPLE = INFO.concat("member:simple");
public static final String INFO_MEMBER_CATEGORY = INFO.concat("member:category:");
public static final String INFO_MEMBER_PRICE = INFO.concat("member:price:");
public static final String INFO_MEMBER_RIGHTS = INFO.concat("member:rights:");
public static final String INFO_MEMBER_AGREEMENT = INFO.concat("member:agreement");
public static final String INFO_MEMBER_CODE = INFO.concat("member:code:");
public static final String INFO_MEMBER_ORDER = INFO.concat("morder:");
public static final String INFO_BUY_MEMBER_ORDER_CODE = INFO.concat("mordercode:");
public static final String INFO_MEMBER_CODE = PREFIX.concat("info:member:code:");
public static final String INFO_MEMBER_ORDER = PREFIX.concat("info:morder:");
public static final String INFO_MEMBER_ORDER_BUY_CODE = PREFIX.concat("info:mordercode:");
// public static final String INFO_LIBRARY_NKNAME = INFO.concat("library:nkname");
public static final String BLACK_LIST = ADAM.concat("blacklist:");
public static final String BLK_LIST_MEMBER_UID = BLACK_LIST.concat("member:uid");
public static final String BLK_LIST_MEMBER_UID = PREFIX.concat("blacklist:member:uid");
public static final String SHOT_MEMBER_ORDER = ADAM.concat("morder:");
public static final String SHOT_MEMBER_ORDER = PREFIX.concat("morder:");
public static final String INCR = ADAM.concat("incr:");
public static final String INCR_MEMBER_NO = INCR.concat("member_no");
public static final String INCR_MEMBER_NO = PREFIX.concat("incr:member_no");
public static final String INCR_MEMBER_LIMITATION = PREFIX.concat("incr:member_limitation");
public static final String SWITCH = ADAM.concat("switch:");
public static final String SWITCH_BUY_MEMBER = SWITCH.concat("buy:member");
public static final String SWITCH_BUY_MEMBER = PREFIX.concat("switch:buy:member");
/* ----------------------------------------------------------------- */
......
......@@ -8,9 +8,9 @@ import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel(value = "AdamMemberParam", description = "编辑会员入参")
@ApiModel(value = "AdamMemberBuildParam", description = "编辑会员入参")
@Data
public class AdamMemberParam implements Serializable {
public class AdamMemberBuildParam implements Serializable {
private static final long serialVersionUID = -7411934614249221021L;
@ApiModelProperty(required = false, value = "会员ID[64]")
private String memberId;
......
......@@ -6,13 +6,14 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "AdamMembershipParam", description = "编辑会员入参")
@ApiModel(value = "AdamMemberRightsBuildParam", description = "编辑权益入参")
@Data
public class AdamMembershipParam implements Serializable {
public class AdamMemberRightsBuildParam implements Serializable {
private static final long serialVersionUID = -7331274160877946420L;
@ApiModelProperty(required = true, value = "会员价格ID")
@ApiModelProperty(required = false, value = "会员价格ID")
private String memberPriceId;
@ApiModelProperty(required = true, value = "原价")
private BigDecimal price;
......@@ -23,20 +24,18 @@ public class AdamMembershipParam implements Serializable {
@ApiModelProperty(required = true, value = "有效天数")
private Integer days;
@ApiModelProperty(required = true, value = "权益ID[64]")
@ApiModelProperty(required = false, value = "权益ID[64]")
private String mrightsId;
@ApiModelProperty(required = true, value = "权益名称[50]")
@ApiModelProperty(required = true, value = "权益标题[50]")
private String title;
@ApiModelProperty(required = true, value = "权益名称[200]")
@ApiModelProperty(required = true, value = "权益副标题[200]")
private String subTitle;
@ApiModelProperty(required = false, value = "标注[50]")
private String label;
@ApiModelProperty(required = true, value = "权益封面图片[255]")
private String cover;
@ApiModelProperty(required = false, value = "详情内容[50]")
@ApiModelProperty(required = false, value = "详情内容")
private String detail;
@ApiModelProperty(required = true, value = "展示顺序[2]")
private Integer seqNo;
}
package com.liquidnet.service.candy.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "CandyMgtCouponBuildParam", description = "新建券入参")
@Data
public class CandyMemberCouponBuildParam {
//private String couponId;
//private Integer state;
@NotBlank(message = "券标题不能为空")
@ApiModelProperty(required = true, value = "券标题", example = "券标题")
private String title;
@NotBlank(message = "券标注不能为空")
@ApiModelProperty(required = true, value = "标注", example = "标注")
private String label;
// @NotBlank(message = "券描述不能为空")
// @ApiModelProperty(required = true, value = "描述:注意/须知", example = "注意/须知")
// private String notice;
//private Integer exclusive;
@NotNull(message = "券类别不能为空")
@ApiModelProperty(required = true, value = "业务类别[0-全场|1-演出|2-商品|3-优先购]", allowableValues = "0,1,2,3,4")
private Integer busiType;
@NotNull(message = "券类型不能为空")
// @ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券]", allowableValues = "1,2,3,4")
@ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券]", allowableValues = "1,2")
private Integer couType;
// @NotNull(message = "券领取方式不能为空")
// @ApiModelProperty(required = true, value = "领取方式[0-用户输入兑换|1-发放至用户]", allowableValues = "0,1")
// private Integer bindType;
// @ApiModelProperty(required = false, value = "折扣[8折即0.8]", example = "0.8")
// private BigDecimal discount;
@ApiModelProperty(required = false, value = "面值", example = "0.01")
private BigDecimal valFace;
@ApiModelProperty(required = false, value = "满减~满", example = "1.00")
private BigDecimal valOver;
@ApiModelProperty(required = false, value = "满减~减", example = "0.01")
private BigDecimal valMinus;
@NotNull(message = "券叠加限制不能为空")
@ApiModelProperty(required = false, value = "叠加限制[0-限制|1-叠加]", allowableValues = "0,1")
private Integer overlay;
//private Integer overlayLevel;
// @NotNull(message = "券有效期不能为空")
// @ApiModelProperty(required = true, value = "有效期(单位天)", example = "30")
// private Integer validity;
// @ApiModelProperty(required = false, value = "兑换有效期(单位天)", example = "30")
// private Integer redeemValidity;
//private LocalDateTime redeemStart;
//private LocalDateTime redeemStop;
//private LocalDateTime effectAt;
//private LocalDateTime expireAt;
//private String operator;
//private Date createdAt;
//private Date updatedAt;
//private String comment;
@ApiModelProperty(required = true, value = "适用规则列表", dataType = "List", example = "[{\"useScope\": 100,\"busiName\": \"适用名称1\",\"busiId\": \"IDIDIDIDIDIDID1\"},{\"useScope\": 100,\"busiName\": \"适用名称2\",\"busiId\": \"IDIDIDIDIDIDID2\"}]")
private List<CandyCouponRuleBuildParam> couponRuleList;
//private String mcouponId;
//private String couponId;
//private Integer state;
@NotNull(message = "券发放量不能为空")
@ApiModelProperty(required = true, value = "发放量", example = "1")
private Integer eventAmt;
// @NotNull(message = "券发放类型不能为空")
// @ApiModelProperty(required = true, value = "发放类型[1-会员|2-手机号|10-全体用户]", allowableValues = "1,2,10")
// private Integer eventType;
// @ApiModelProperty(required = false, value = "`发放类型`为2-手机号时发放手机号以,分隔", example = "17701223310,17701223310")
// private String eventLimit;
// @NotNull(message = "券发放时间不能为空")
// @ApiModelProperty(required = true, value = "发放时间[yyyy-MM-dd HH:mm:ss](立即-当前时间|预约-点选时间)", example = "2021-08-26 00:00:00")
// private String eventAt;
//private String operator;
//private LocalDateTime createdAt;
//private LocalDateTime updatedAt;
//private String comment;
}
......@@ -2,90 +2,202 @@ package com.liquidnet.client.admin.web.controller.zhengzai.adam;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.enums.BusinessType;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberAdminService;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeAdminService;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberPriceAdminService;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.dto.AdamMemberParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.dto.param.admin.AdamMemberBuildParam;
import com.liquidnet.service.adam.dto.param.admin.AdamMemberRightsBuildParam;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.entity.AdamMemberRights;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.dto.admin.CandyMemberCouponBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponMemberDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Api(tags = "会员信息")
@Slf4j
@Validated
@RestController
@RequestMapping("adam/member")
public class AdamMemberAdminController {
@Api(tags = "登登登会员")
@Controller
@RequestMapping("adam/member/detail")
public class AdamMemberAdminController extends BaseController {
private final String prefix = "zhengzai/adam/member/detail";
@Autowired
IAdamMemberAdminService adamMemberService;
@Autowired
IAdamMemberRightsAdminService adamMemberRightsAdminService;
@Autowired
IAdamMemberPriceAdminService adamMemberPriceAdminService;
@Autowired
IAdamMemberCodeAdminService adamMemberCodeAdminService;
@Autowired
ICandyMgtCouponAdminService candyMgtCouponAdminService;
@Autowired
RedisUtil redisUtil;
@Log(title = "会员信息", businessType = BusinessType.LIST)
@RequiresPermissions("adam:member:list")
@ApiOperation(value = "会员卡列表")
@PostMapping("list")
public ResponseDto<List<AdamMemberVo>> list() {
List<AdamMember> list = adamMemberService.list(
Wrappers.lambdaQuery(AdamMember.class).select(
AdamMember::getMemberId, AdamMember::getName, AdamMember::getTitle, AdamMember::getType, AdamMember::getState
@RequiresPermissions("adam:member:detail:view")
@GetMapping()
public String detailInfo(ModelMap mmap) {
AdamMember member = adamMemberService.getOne(Wrappers.lambdaQuery(AdamMember.class)
.eq(AdamMember::getState, 1)
.select(
AdamMember::getMemberId,
AdamMember::getName,
AdamMember::getTitle,
AdamMember::getSubTitle,
AdamMember::getAvatar,
AdamMember::getIcon,
AdamMember::getLimitation,
AdamMember::getLimitStart,
AdamMember::getLimitEnd,
AdamMember::getInterestsDetail,
AdamMember::getNotes,
AdamMember::getType,
AdamMember::getIntegralRate
)
);
List<AdamMemberVo> vos = new ArrayList<>();
list.forEach(r -> {
vos.add(AdamMemberVo.getNew().copy(r));
});
return ResponseDto.success(vos);
mmap.put("member", member);
if (null != member) {
List<AdamMemberRights> memberRightsList = adamMemberRightsAdminService.list(Wrappers.lambdaQuery(AdamMemberRights.class)
.eq(AdamMemberRights::getState, 1)
.eq(AdamMemberRights::getMemberId, member.getMemberId())
.select(
AdamMemberRights::getMrightsId,
AdamMemberRights::getCover,
AdamMemberRights::getTitle,
AdamMemberRights::getSubTitle,
AdamMemberRights::getDetail
)
);
mmap.put("memberRightsList", memberRightsList);
if (!CollectionUtils.isEmpty(memberRightsList)) {
List<String> mrightsIdList = memberRightsList.stream().map(AdamMemberRights::getMrightsId).collect(Collectors.toList());
List<CandyMgtCouponMemberDto> couponMemberDtoList = candyMgtCouponAdminService.listForMgtCouponMemberDto(mrightsIdList);
mmap.put("couponMemberDtoList", couponMemberDtoList);
}
AdamMemberPrice memberPrice = adamMemberPriceAdminService.getOne(Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getState, 1)
.eq(AdamMemberPrice::getMemberId, member.getMemberId())
.select(
AdamMemberPrice::getMemberPriceId,
AdamMemberPrice::getPrice,
AdamMemberPrice::getPriceFixed,
AdamMemberPrice::getPriceSpecial,
AdamMemberPrice::getDays
)
);
mmap.put("memberPrice", memberPrice);
}
return prefix + "/info";
}
@Log(title = "会员信息", businessType = BusinessType.INSERT)
@RequiresPermissions("adam:member:add")
@ApiOperation(value = "添加会员卡")
@PostMapping("add")
public ResponseDto<Object> add(@Valid @RequestBody AdamMemberParam parameter) {
adamMemberService.add(parameter);
return ResponseDto.success();
@ApiOperation(value = "会员设置:基础信息编辑")
@RequiresPermissions("adam:member:detail:edit")
@PostMapping("edit")
@ResponseBody
public AjaxResult detailInfoEdit(AdamMemberBuildParam parameter) {
return this.toAjax(adamMemberService.edit(parameter));
}
@Log(title = "会员信息", businessType = BusinessType.DETAIL)
@RequiresPermissions("adam:member:info")
@ApiOperation(value = "会员卡详情")
@PostMapping("info")
public ResponseDto<Object> info(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId) {
return ResponseDto.success(adamMemberService.getOne(
Wrappers.lambdaQuery(AdamMember.class).eq(AdamMember::getMemberId, memberId)
));
@ApiOperation(value = "会员套餐:权益编辑")
@RequiresPermissions("adam:member:detail:rights:edit")
@PostMapping("rights_edit")
@ResponseBody
public AjaxResult detailRightEdit(AdamMemberRightsBuildParam parameter) {
return this.toAjax(true);
}
@Log(title = "会员信息", businessType = BusinessType.UPDATE)
@RequiresPermissions("adam:member:edit")
@ApiOperation(value = "会员卡编辑")
@PostMapping("edit")
public ResponseDto<Object> edit(@Valid @RequestBody AdamMemberParam parameter) {
adamMemberService.edit(parameter);
return ResponseDto.success();
@ApiOperation(value = "会员套餐:券编辑")
@RequiresPermissions("adam:member:detail:coupon:edit")
@PostMapping("coupon_edit")
@ResponseBody
public AjaxResult detailCouponEdit(CandyMemberCouponBuildParam parameter) {
return this.toAjax(true);
}
@ApiOperation(value = "会员码:列表")
@RequiresPermissions("adam:member:detail:code:list")
@PostMapping("code_list")
@ResponseBody
public AjaxResult detailCodeList() {
return this.toAjax(true);
}
@ApiOperation(value = "会员码:生成")
@RequiresPermissions("adam:member:detail:code:gen")
@PostMapping("code_gen")
@ResponseBody
public AjaxResult detailCodeGen() {
return this.toAjax(true);
}
// @Log(title = "会员信息", businessType = BusinessType.LIST)
// @RequiresPermissions("adam:member:list")
// @ApiOperation(value = "会员卡列表")
// @PostMapping("list")
// public ResponseDto<List<AdamMemberVo>> list() {
// List<AdamMember> list = adamMemberService.list(
// Wrappers.lambdaQuery(AdamMember.class).select(
// AdamMember::getMemberId, AdamMember::getName, AdamMember::getTitle, AdamMember::getType, AdamMember::getState
// )
// );
// List<AdamMemberVo> vos = new ArrayList<>();
// list.forEach(r -> {
// vos.add(AdamMemberVo.getNew().copy(r));
// });
// return ResponseDto.success(vos);
// }
//
// @Log(title = "会员信息", businessType = BusinessType.INSERT)
// @RequiresPermissions("adam:member:add")
// @ApiOperation(value = "添加会员卡")
// @PostMapping("add")
// public ResponseDto<Object> add(@Valid @RequestBody AdamMemberParam parameter) {
// adamMemberService.add(parameter);
// return ResponseDto.success();
// }
//
// @Log(title = "会员信息", businessType = BusinessType.DETAIL)
// @RequiresPermissions("adam:member:info")
// @ApiOperation(value = "会员卡详情")
// @PostMapping("info")
// public ResponseDto<Object> info(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId) {
// return ResponseDto.success(adamMemberService.getOne(
// Wrappers.lambdaQuery(AdamMember.class).eq(AdamMember::getMemberId, memberId)
// ));
// }
//
// @Log(title = "会员信息", businessType = BusinessType.UPDATE)
// @RequiresPermissions("adam:member:edit")
// @ApiOperation(value = "会员卡编辑")
// @PostMapping("edit")
// public ResponseDto<Object> edit(@Valid @RequestBody AdamMemberParam parameter) {
// adamMemberService.edit(parameter);
// return ResponseDto.success();
// }
@Log(title = "会员信息", businessType = BusinessType.MEMBER_GEN_CODE)
@RequiresPermissions("adam:member:gen_code")
@ApiOperation(value = "生成兑换码")
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('会员设置')" />
<style type="text/css">.user-info-head{position:relative;display:inline-block;}.user-info-head:hover:after{content:'\f030';position:absolute;left:0;right:0;top:0;bottom:0;color:#eee;background:rgba(0,0,0,0.5);font-family:FontAwesome;font-size:24px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:pointer;line-height:110px;border-radius:50%;}</style>
</head>
<body class="gray-bg" style="font: 14px Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif !important;">
<!--<input id="userId" name="userId" type="hidden" th:value="${user.userId}" />-->
<section class="section-content">
<div class="row">
<div class="col-sm-12 about">
<div class="ibox float-e-margins">
<div class="ibox-content">
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#memberinfo" data-toggle="tab" aria-expanded="true">基础信息</a></li>
<li><a href="#membership" data-toggle="tab" aria-expanded="false">会员套餐</a></li>
<li><a href="#membercode" data-toggle="tab" aria-expanded="false">会员码</a></li>
</ul>
<div class="tab-content">
<!--基础信息-->
<div class="tab-pane active" id="memberinfo" th:object="${member}">
<form class="form-horizontal" id="form-member-edit">
<!--隐藏ID-->
<input name="memberId" id="id" type="hidden" th:field="*{memberId}" readonly>
<div class="form-group">
<label class="col-sm-2 control-label">会员标题:</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="title" th:field="*{title}" placeholder="请输入标题">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">会员说明:</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="subTitle" th:field="*{subTitle}" placeholder="简略描述会员功能">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">会员banner:</label>
<div class="text-center">
<p class="user-info-head" onclick="avatar()">
<img class="img-circle img-lg" th:src="(${#strings.isEmpty(member.avatar)}) ? @{/img/profile.jpg} : @{${member.avatar}}" th:onerror="'this.src=\'' + @{'/img/profile.jpg'} + '\''">
</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">会员小尾巴:</label>
<div class="text-center">
<p class="user-info-head" onclick="avatar()">
<img class="img-circle img-lg" th:src="(${#strings.isEmpty(member.icon)}) ? @{/img/log.png} : @{${member.icon}}" th:onerror="'this.src=\'' + @{'/img/log.png'} + '\''">
</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否限购:</label>
<div class="col-sm-10">
<div class="radio-box">
<input type="radio" id="radio1" th:field="*{limitation}" name="limitation" value="0">
<label for="radio1"></label>
</div>
<div class="radio-box">
<input type="radio" id="radio2" th:field="*{limitation}" name="limitation" value="1">
<label for="radio2"></label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">会员弹窗文案:</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="interestsDetail" size="10" th:field="*{interestsDetail}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">注意事项:</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="notes" th:field="*{notes}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否开售:</label>
<div class="col-sm-10">
<div class="radio-box">
<input type="radio" id="radio1" th:field="*{onsale}" name="onsale" value="2">
<label for="radio1"></label>
</div>
<div class="radio-box">
<input type="radio" id="radio2" th:field="*{onsale}" name="onsale" value="1">
<label for="radio2"></label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitMemberInfo()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
</form>
</div>
<!--会员套餐-->
<div class="tab-pane" id="membership">
<form class="form-horizontal" id="form-membership-edit">
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="btn btn-sm btn-primary" onclick="submitMemberShip()"><i class="fa fa-check"></i>保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
</div>
</div>
</form>
</div>
<!--会员码-->
<div class="tab-pane" id="membercode">
<form class="form-horizontal" id="form-user-resetPwd">
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<th:block th:include="include :: footer" />
<script>
function avatar() {
var url = ctx + 'system/user/profile/avatar';
top.layer.open({
type: 2,
area: [$(window).width() + 'px', $(window).height() + 'px'],
fix: false,
//不固定
maxmin: true,
shade: 0.3,
title: "修改头像",
content: url,
btn: ['确定', '关闭'],
// 弹层外区域关闭
shadeClose: true,
yes: function(index, layero) {
var iframeWin = layero.find('iframe')[0];
iframeWin.contentWindow.submitHandler(index, layero);
},
cancel: function(index) {
return true;
}
});
}
/*基础信息-修改*/
$("#form-member-edit").validate({
onkeyup: false,
rules:{
title:{
required:true,
},
subTitle:{
required:true,
},
limitation:{
required:true,
},
interestsDetail:{
required:true,
},
notes:{
required:true,
},
onsale:{
required:true,
},
},
messages: {
"title": {
required: "请输入标题",
},
"subTitle": {
required: "请输入会员说明",
},
"limitation": {
required: "请选择是否限购",
},
"interestsDetail": {
required: "请选择注意事项",
},
"notes": {
required: "请选择是否限购",
},
"onsale": {
required: "请选择是否限购",
},
},
focusCleanup: true
});
function submitMemberInfo() {
if ($.validate.form()) {
$.operate.saveModal(ctx + "adam/member/detail/edit", $('#form-member-edit').serialize());
}
}
/*会员套餐-修改*/
$("#form-membership-edit").validate({
onkeyup: false,
rules:{
},
messages: {
},
focusCleanup: true
});
function submitMemberShip () {
if ($.validate.form("form-membership-edit")) {
$.operate.saveModal(ctx + "system/user/profile/resetPwd", $('#form-membership-edit').serialize());
}
}
</script>
</body>
</html>
package com.liquidnet.client.admin.zhengzai.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.param.admin.AdamMemberParam;
import com.liquidnet.service.adam.dto.param.admin.AdamMemberBuildParam;
import com.liquidnet.service.adam.entity.AdamMember;
/**
* 会员信息
*/
public interface IAdamMemberAdminService extends IService<AdamMember> {
void add(AdamMemberParam parameter);
void add(AdamMemberBuildParam parameter);
boolean edit(AdamMemberParam parameter);
boolean edit(AdamMemberBuildParam parameter);
}
......@@ -6,20 +6,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.param.admin.AdamMemberParam;
import com.liquidnet.service.adam.dto.param.admin.AdamMemberBuildParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.mapper.AdamMemberMapper;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
......@@ -31,13 +25,11 @@ import java.util.List;
public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, AdamMember> implements IAdamMemberAdminService {
@Autowired
AdamMemberMapper adamMemberMapper;
// @Autowired
// MongoTemplate mongoTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public void add(AdamMemberParam parameter) {
public void add(AdamMemberBuildParam parameter) {
AdamMember adamMember = new AdamMember();
BeanUtils.copyProperties(parameter, adamMember);
......@@ -52,12 +44,11 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
AdamMemberVo vo = AdamMemberVo.getNew().copy(adamMember);
adamMemberMapper.insert(adamMember);
// mongoTemplate.insert(vo, AdamMemberVo.class.getSimpleName());
redisUtil.set(AdamRedisConst.INFO_MEMBER_CATEGORY.concat(vo.getMemberId()), vo);
}
@Override
public boolean edit(AdamMemberParam parameter) {
public boolean edit(AdamMemberBuildParam parameter) {
AdamMember adamMember = new AdamMember();
BeanUtils.copyProperties(parameter, adamMember);
adamMember.setUpdatedAt(LocalDateTime.now());
......
......@@ -4,7 +4,6 @@ import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.util.NknameUtil;
import com.liquidnet.service.adam.util.ObjectUtil;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
......@@ -599,15 +598,15 @@ public class AdamRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <AdamMemberCodeVo::buyOrderNo, MEMBER_CODE> */
public boolean setMemberCodeByBuyOrderNo(String buyOrderNo, String memberCode) {
return redisUtil.set(AdamRedisConst.INFO_BUY_MEMBER_ORDER_CODE + buyOrderNo, memberCode);
return redisUtil.set(AdamRedisConst.INFO_MEMBER_ORDER_BUY_CODE + buyOrderNo, memberCode);
}
public String getMemberCodeByBuyOrderNo(String buyOrderNo) {
return (String) redisUtil.get(AdamRedisConst.INFO_BUY_MEMBER_ORDER_CODE + buyOrderNo);
return (String) redisUtil.get(AdamRedisConst.INFO_MEMBER_ORDER_BUY_CODE + buyOrderNo);
}
public void delMemberCodeByBuyOrderNo(String buyOrderNo) {
redisUtil.del(AdamRedisConst.INFO_BUY_MEMBER_ORDER_CODE + buyOrderNo);
redisUtil.del(AdamRedisConst.INFO_MEMBER_ORDER_BUY_CODE + buyOrderNo);
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | */
......
......@@ -584,15 +584,15 @@ public class DMRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <AdamMemberCodeVo::buyOrderNo, MEMBER_CODE> */
public boolean setMemberCodeByBuyOrderNo(String buyOrderNo, String memberCode) {
return redisUtil.set(AdamRedisConst.INFO_BUY_MEMBER_ORDER_CODE + buyOrderNo, memberCode);
return redisUtil.set(AdamRedisConst.INFO_MEMBER_ORDER_BUY_CODE + buyOrderNo, memberCode);
}
public String getMemberCodeByBuyOrderNo(String buyOrderNo) {
return (String) redisUtil.get(AdamRedisConst.INFO_BUY_MEMBER_ORDER_CODE + buyOrderNo);
return (String) redisUtil.get(AdamRedisConst.INFO_MEMBER_ORDER_BUY_CODE + buyOrderNo);
}
public void delMemberCodeByBuyOrderNo(String buyOrderNo) {
redisUtil.del(AdamRedisConst.INFO_BUY_MEMBER_ORDER_CODE + buyOrderNo);
redisUtil.del(AdamRedisConst.INFO_MEMBER_ORDER_BUY_CODE + buyOrderNo);
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | */
......
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