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

Commit e8d899ad authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/new_member' into new_member

parents fb9f5279 ce9834af
...@@ -58,7 +58,7 @@ alter table adam_member_price add price_special decimal(8, 2) null comment '特 ...@@ -58,7 +58,7 @@ alter table adam_member_price add price_special decimal(8, 2) null comment '特
# 会员码表调整 # 会员码表调整
alter table adam_member_code modify state tinyint null comment '状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]'; alter table adam_member_code modify state tinyint null comment '状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]';
create index idx_amember_code_id on adam_member_code (code); create index idx_amember_code_id on adam_member_code (code);
alter table adam_member_code add validity tinyint null comment '有效期(单位天)' after state; alter table adam_member_code add validity int null comment '有效期(单位天)' after state;
alter table adam_member_code add effect_at datetime(3) null comment '生效时间' after validity; alter table adam_member_code add effect_at datetime(3) null comment '生效时间' after validity;
alter table adam_member_code add expire_at datetime(3) null comment '过期时间' after effect_at; alter table adam_member_code add expire_at datetime(3) null comment '过期时间' after effect_at;
alter table adam_member_code add operator varchar(64) null comment 'type=2时记录创建人' after expire_at; alter table adam_member_code add operator varchar(64) null comment 'type=2时记录创建人' after expire_at;
...@@ -111,6 +111,11 @@ create table adam_member_rights ...@@ -111,6 +111,11 @@ create table adam_member_rights
label varchar(50) comment '标注', label varchar(50) comment '标注',
cover varchar(255) comment '图片标识', cover varchar(255) comment '图片标识',
detail text comment '详情内容', detail text comment '详情内容',
operator varchar(64) comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255) comment varchar(255)
) engine = InnoDB comment '会员权益配置'; ) engine = InnoDB comment '会员权益配置';
create unique index uidx_adam_member_rights_id on adam_member_rights (mrights_id); create unique index uidx_adam_member_rights_id on adam_member_rights (mrights_id);
...@@ -126,11 +131,36 @@ create table adam_user_busi_acct ...@@ -126,11 +131,36 @@ create table adam_user_busi_acct
work varchar(64) comment '业务服务模块', work varchar(64) comment '业务服务模块',
ppwd varchar(64) comment '业务服务密码', ppwd varchar(64) comment '业务服务密码',
state tinyint comment '1-NORMAL,2-INVALID', state tinyint comment '1-NORMAL,2-INVALID',
created_at datetime not null, created_at datetime(3) not null,
updated_at datetime, updated_at datetime(3),
comment text comment text
) engine = InnoDB comment '用户业务服务账号表'; ) engine = InnoDB comment '用户业务服务账号表';
create index idx_adam_user_busi_acct_uid on adam_user_busi_acct (uid); create index idx_adam_user_busi_acct_uid on adam_user_busi_acct (uid);
-- >>------------------------------------------------------------------------------------|20210924会员码管理
drop table if exists adam_member_code_batch;
create table adam_member_code_batch
(
mid bigint unsigned auto_increment primary key,
batch_no varchar(64) not null comment '会员码批次号',
member_id varchar(64) not null comment '~`adam_member.member_id`',
member_price_id varchar(64) not null comment '~`adam_member_price.member_price_id`',
member_name varchar(80) comment '会员卡名称~`adam_member.name`',
member_combo varchar(80) comment '套餐包名称',
gen_num int comment '生成数量',
use_num int comment '使用数量',
`describe` varchar(64) comment '描述',
validity int comment '有效期(单位天)',
effect_at datetime(3) null comment '生效时间',
expire_at datetime(3) null comment '失效时间',
state tinyint comment '状态[0-INIT|1-NORMAL|2-INVALID]',
operator varchar(64) comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255)
) engine = InnoDB comment '会员码批次记录';
create index idx_adam_member_code_batch_no on adam_member_code_batch (batch_no);
# -- >>------------------------------------------------------------------------------------ |20210817会员与券改版 # -- >>------------------------------------------------------------------------------------ |20210817会员与券改版
# 券发放管理 # 券发放管理
drop table if exists candy_mgt_coupon; drop table if exists candy_mgt_coupon;
......
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: IReportPerformanceService
* @Package com.liquidnet.service.kylin.service
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 11:27
*/
public interface IReportPerformanceService {
/**
* 获取按省统计数据
* @param performanceId
* @return
*/
List<PerformanceProvinceDataDto> getProvinceDataList(String performanceId);
/**
* 获取按城市统计数据
* @param performanceId
* @return
*/
List<PerformanceCityDataDto> getCityDataList(String performanceId);
/**
* 获取按年龄统计数据
* @param performanceId
* @return
*/
List<PerformanceAgeDataDto> getAgeDataList(String performanceId);
/**
* 获取按性别统计数据
* @param performanceId
* @return
*/
List<PerformanceSexDataDto> getSexDataList(String performanceId);
}
package com.liquidnet.client.admin.web.controller.zhengzai.adam; package com.liquidnet.client.admin.web.controller.zhengzai.adam;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.client.admin.common.annotation.Log; import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController; 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.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType; import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.adam.dto.AdamMemberCodeExcelDto;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberAdminService; 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.IAdamMemberPriceAdminService;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService; import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService; import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService; import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.service.adam.dto.admin.AdamMemberBuildParam;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.service.adam.dto.admin.AdamMemberPriceBuildParam;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.dto.admin.AdamMemberRightsBuildParam;
import com.liquidnet.service.adam.dto.admin.*;
import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo;
import com.liquidnet.service.adam.entity.AdamMember; import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.entity.AdamMemberCode;
import com.liquidnet.service.adam.entity.AdamMemberPrice; import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.entity.AdamMemberRights; import com.liquidnet.service.adam.entity.AdamMemberRights;
import com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam; import com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam;
...@@ -41,8 +32,6 @@ import org.springframework.validation.annotation.Validated; ...@@ -41,8 +32,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -60,27 +49,15 @@ public class AdamMemberAdminController extends BaseController { ...@@ -60,27 +49,15 @@ public class AdamMemberAdminController extends BaseController {
@Autowired @Autowired
IAdamMemberRightsAdminService adamMemberRightsAdminService; IAdamMemberRightsAdminService adamMemberRightsAdminService;
@Autowired @Autowired
IAdamMemberCodeAdminService adamMemberCodeAdminService;
@Autowired
ICandyMgtCouponAdminService candyMgtCouponAdminService; ICandyMgtCouponAdminService candyMgtCouponAdminService;
@Autowired @Autowired
ICandyCouponAdminService candyCouponAdminService; ICandyCouponAdminService candyCouponAdminService;
@Autowired
private RedisUtil redisUtil;
@GetMapping() @GetMapping()
public String view() { public String view() {
return prefix + "/member"; return prefix + "/member";
} }
@RequiresPermissions("adam:member:view:code")
@GetMapping("code/{memberId}")
public String viewCode(@PathVariable("memberId") String memberId, ModelMap mmap) {
mmap.put("memberId", memberId);
return prefix + "/code";
}
@RequiresPermissions("adam:member:view:list") @RequiresPermissions("adam:member:view:list")
@Log(title = "会员管理:会员卡:列表", businessType = BusinessType.LIST) @Log(title = "会员管理:会员卡:列表", businessType = BusinessType.LIST)
@PostMapping("list") @PostMapping("list")
...@@ -249,128 +226,4 @@ public class AdamMemberAdminController extends BaseController { ...@@ -249,128 +226,4 @@ public class AdamMemberAdminController extends BaseController {
return this.toAjax(candyMgtCouponAdminService.editMgtCouponForMemberRights(parameter)); return this.toAjax(candyMgtCouponAdminService.editMgtCouponForMemberRights(parameter));
} }
} }
@ApiOperation(value = "会员码:列表")
@RequiresPermissions("adam:member:list:code")
@Log(title = "会员管理:会员码:列表", businessType = BusinessType.LIST)
@PostMapping("list_code")
@ResponseBody
public TableDataInfo listCode(AdamMemberCodeListParam parameter) {
return getDataTable(codeListQuery(parameter));
}
private List<AdamMemberCode> codeListQuery(AdamMemberCodeListParam parameter) {
LambdaQueryWrapper<AdamMemberCode> queryWrapper = Wrappers.lambdaQuery(AdamMemberCode.class).orderByDesc(AdamMemberCode::getCreatedAt);
queryWrapper.eq(AdamMemberCode::getMemberId, parameter.getMemberId());
queryWrapper.eq(AdamMemberCode::getType, 2);
queryWrapper.ne(AdamMemberCode::getState, 2);
if (null != parameter.getState()) {
queryWrapper.eq(AdamMemberCode::getState, parameter.getState());
}
queryWrapper.select(
AdamMemberCode::getCode,
AdamMemberCode::getState,
AdamMemberCode::getOperator,
AdamMemberCode::getCreatedAt,
AdamMemberCode::getValidity,
AdamMemberCode::getEffectAt,
AdamMemberCode::getExpireAt,
AdamMemberCode::getUseOrderNo,
AdamMemberCode::getUseUid,
AdamMemberCode::getUseAt
);
queryWrapper.orderByDesc(AdamMemberCode::getMemberNo);
return adamMemberCodeAdminService.list(queryWrapper);
}
@ApiOperation(value = "会员码:导出")
@RequiresPermissions("adam:member:export:code")
@Log(title = "会员管理:会员码:导出", businessType = BusinessType.EXPORT)
@PostMapping("export_code")
@ResponseBody
public AjaxResult exportCode(AdamMemberCodeListParam parameter) {
List<AdamMemberCode> list = codeListQuery(parameter);
ExcelUtil<AdamMemberCodeExcelDto> excelUtil = new ExcelUtil<>(AdamMemberCodeExcelDto.class);
List<AdamMemberCodeExcelDto> excelList = new ArrayList<>();
list.forEach(r -> {
excelList.add(AdamMemberCodeExcelDto.getNew().copy(r));
});
return excelUtil.exportExcel(excelList, "会员码数据");
}
@ApiOperation(value = "会员码:生成")
@RequiresPermissions("adam:member:gen:code")
@Log(title = "会员管理:会员码:生成", businessType = BusinessType.INSERT)
@PostMapping("gen_code")
@ResponseBody
public AjaxResult genCode(@Validated AdamMemberCodeGenParam parameter) {
int count = adamMemberPriceAdminService.count(
Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, parameter.getMemberPriceId())
.eq(AdamMemberPrice::getMemberId, parameter.getMemberId())
.eq(AdamMemberPrice::getState, 1)
);
if (count <= 0) {
logger.warn("会员卡ID/价格ID无效[{}]", parameter);
return this.error("会员卡ID/价格ID无效");
}
return this.toAjax(adamMemberCodeAdminService.createGiftCode(parameter));
}
@RequiresPermissions("adam:member:invalid:code")
@Log(title = "会员管理:会员码:失效", businessType = BusinessType.UPDATE)
@PostMapping("invalid_code")
@ResponseBody
public AjaxResult invalid(AdamMemberCodeOptParam optParam) {
return toAjax(this.invalidRecoverCode(optParam, 4));
}
/**
* 失效|退回会员兑换码
*
* @param optParam AdamMemberCodeOptParam
* @param state 状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]
* @return boolean
*/
private boolean invalidRecoverCode(AdamMemberCodeOptParam optParam, int state) {
String loginName = ShiroUtils.getLoginName();
LocalDateTime now = LocalDateTime.now();
logger.info("by:{},optParam:{},state:{}", loginName, optParam, state);
int beforeState = state == 4 ? 0 : (state == 5 ? 1 : -1);
ArrayList<String> updateCodeList = CollectionUtil.arrayListString();
optParam.getCodes().forEach(r -> {
String key = AdamRedisConst.INFO_MEMBER_CODE.concat(r);
AdamMemberCodeVo vo = (AdamMemberCodeVo) redisUtil.get(key);
if (null != vo && vo.getState() == beforeState) {
redisUtil.del(key);
updateCodeList.add(vo.getCode());
}
});
if (!CollectionUtils.isEmpty(updateCodeList)) {
LambdaUpdateWrapper<AdamMemberCode> memberCodeUpdateWrapper = Wrappers.lambdaUpdate(AdamMemberCode.class);
memberCodeUpdateWrapper.eq(AdamMemberCode::getMemberId, optParam.getMemberId());
memberCodeUpdateWrapper.eq(AdamMemberCode::getState, beforeState);
memberCodeUpdateWrapper.in(AdamMemberCode::getCode, updateCodeList);
memberCodeUpdateWrapper.set(AdamMemberCode::getState, state);
memberCodeUpdateWrapper.set(AdamMemberCode::getOperator, loginName);
memberCodeUpdateWrapper.set(AdamMemberCode::getUpdatedAt, now);
return adamMemberCodeAdminService.update(memberCodeUpdateWrapper);
}
return false;
}
@RequiresPermissions("adam:member:recover:code")
@Log(title = "会员管理:会员码:退回", businessType = BusinessType.UPDATE)
@PostMapping("recover_code")
@ResponseBody
public AjaxResult recover(AdamMemberCodeOptParam optParam) {
return toAjax(this.invalidRecoverCode(optParam, 5));
}
} }
package com.liquidnet.client.admin.web.controller.zhengzai.adam;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.adam.dto.AdamMemberCodeExcelDto;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeAdminService;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberPriceAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.admin.AdamMemberCodeGenParam;
import com.liquidnet.service.adam.dto.admin.AdamMemberCodeListParam;
import com.liquidnet.service.adam.dto.admin.AdamMemberCodeOptParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo;
import com.liquidnet.service.adam.entity.AdamMemberCode;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Api(tags = "会员码管理")
@Controller
@RequestMapping("adam/mcode")
public class AdamMemberCodeAdminController extends BaseController {
private final String prefix = "zhengzai/adam/member/code";
@Autowired
IAdamMemberCodeAdminService adamMemberCodeAdminService;
@Autowired
IAdamMemberPriceAdminService adamMemberPriceAdminService;
@Autowired
RedisUtil redisUtil;
@GetMapping("code/mgt")
public String viewCodeMgt(@RequestParam String memberId, ModelMap mmap) {
mmap.put("memberId", memberId);
return prefix + "/code_mgt";
}
@ApiOperation(value = "会员码:管理")
@RequiresPermissions("adam:member:code:mgt:list")
@Log(title = "会员管理:会员码:管理", businessType = BusinessType.LIST)
@PostMapping("code/mgt/list")
@ResponseBody
public TableDataInfo listCodeMgt(@RequestParam String memberId) {
// TODO: 2021/9/23 码生成记录
return getDataTable(null);
}
@GetMapping("code/view")
public String viewCode(@RequestParam String memberId, @RequestParam String batchNo, ModelMap mmap) {
mmap.put("memberId", memberId);
mmap.put("batchNo", batchNo);
return prefix + "/code";
}
@ApiOperation(value = "会员码:列表")
@RequiresPermissions("adam:member:code:list")
@Log(title = "会员管理:会员码:列表", businessType = BusinessType.LIST)
@PostMapping("code/list")
@ResponseBody
public TableDataInfo listCode(AdamMemberCodeListParam parameter) {
return getDataTable(codeListQuery(parameter));
}
private List<AdamMemberCode> codeListQuery(AdamMemberCodeListParam parameter) {
LambdaQueryWrapper<AdamMemberCode> queryWrapper = Wrappers.lambdaQuery(AdamMemberCode.class).orderByDesc(AdamMemberCode::getCreatedAt);
queryWrapper.eq(AdamMemberCode::getMemberId, parameter.getMemberId());
queryWrapper.eq(AdamMemberCode::getType, 2);
queryWrapper.ne(AdamMemberCode::getState, 2);
if (null != parameter.getState()) {
queryWrapper.eq(AdamMemberCode::getState, parameter.getState());
}
queryWrapper.select(
AdamMemberCode::getCode,
AdamMemberCode::getState,
AdamMemberCode::getOperator,
AdamMemberCode::getCreatedAt,
AdamMemberCode::getValidity,
AdamMemberCode::getEffectAt,
AdamMemberCode::getExpireAt,
AdamMemberCode::getUseOrderNo,
AdamMemberCode::getUseUid,
AdamMemberCode::getUseAt
);
queryWrapper.orderByDesc(AdamMemberCode::getMemberNo);
return adamMemberCodeAdminService.list(queryWrapper);
}
@ApiOperation(value = "会员码:导出")
@RequiresPermissions("adam:member:code:export")
@Log(title = "会员管理:会员码:导出", businessType = BusinessType.EXPORT)
@PostMapping("code/export")
@ResponseBody
public AjaxResult exportCode(AdamMemberCodeListParam parameter) {
List<AdamMemberCode> list = codeListQuery(parameter);
ExcelUtil<AdamMemberCodeExcelDto> excelUtil = new ExcelUtil<>(AdamMemberCodeExcelDto.class);
List<AdamMemberCodeExcelDto> excelList = new ArrayList<>();
list.forEach(r -> {
excelList.add(AdamMemberCodeExcelDto.getNew().copy(r));
});
return excelUtil.exportExcel(excelList, "会员码数据");
}
@ApiOperation(value = "会员码:生成")
@RequiresPermissions("adam:member:code:gen")
@Log(title = "会员管理:会员码:生成", businessType = BusinessType.INSERT)
@PostMapping("code/gen")
@ResponseBody
public AjaxResult genCode(@Validated AdamMemberCodeGenParam parameter) {
int count = adamMemberPriceAdminService.count(
Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, parameter.getMemberPriceId())
.eq(AdamMemberPrice::getMemberId, parameter.getMemberId())
.eq(AdamMemberPrice::getState, 1)
);
if (count <= 0) {
logger.warn("会员卡ID/价格ID无效[{}]", parameter);
return this.error("会员卡ID/价格ID无效");
}
return this.toAjax(adamMemberCodeAdminService.createGiftCode(parameter));
}
@RequiresPermissions("adam:member:code:invalid")
@Log(title = "会员管理:会员码:失效", businessType = BusinessType.UPDATE)
@PostMapping("invalid_code")
@ResponseBody
public AjaxResult invalid(AdamMemberCodeOptParam optParam) {
return toAjax(this.invalidRecoverCode(optParam, 4));
}
/**
* 失效|退回会员兑换码
*
* @param optParam AdamMemberCodeOptParam
* @param state 状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]
* @return boolean
*/
private boolean invalidRecoverCode(AdamMemberCodeOptParam optParam, int state) {
String loginName = ShiroUtils.getLoginName();
LocalDateTime now = LocalDateTime.now();
logger.info("by:{},optParam:{},state:{}", loginName, optParam, state);
int beforeState = state == 4 ? 0 : (state == 5 ? 1 : -1);
ArrayList<String> updateCodeList = CollectionUtil.arrayListString();
optParam.getCodes().forEach(r -> {
String key = AdamRedisConst.INFO_MEMBER_CODE.concat(r);
AdamMemberCodeVo vo = (AdamMemberCodeVo) redisUtil.get(key);
if (null != vo && vo.getState() == beforeState) {
redisUtil.del(key);
updateCodeList.add(vo.getCode());
}
});
if (!CollectionUtils.isEmpty(updateCodeList)) {
LambdaUpdateWrapper<AdamMemberCode> memberCodeUpdateWrapper = Wrappers.lambdaUpdate(AdamMemberCode.class);
memberCodeUpdateWrapper.eq(AdamMemberCode::getMemberId, optParam.getMemberId());
memberCodeUpdateWrapper.eq(AdamMemberCode::getState, beforeState);
memberCodeUpdateWrapper.in(AdamMemberCode::getCode, updateCodeList);
memberCodeUpdateWrapper.set(AdamMemberCode::getState, state);
memberCodeUpdateWrapper.set(AdamMemberCode::getOperator, loginName);
memberCodeUpdateWrapper.set(AdamMemberCode::getUpdatedAt, now);
return adamMemberCodeAdminService.update(memberCodeUpdateWrapper);
}
return false;
}
@RequiresPermissions("adam:member:code:recover")
@Log(title = "会员管理:会员码:退回", businessType = BusinessType.UPDATE)
@PostMapping("recover_code")
@ResponseBody
public AjaxResult recover(AdamMemberCodeOptParam optParam) {
return toAjax(this.invalidRecoverCode(optParam, 5));
}
}
package com.liquidnet.client.admin.web.controller.zhengzai.kylin;
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.commons.lang.util.StringUtil;
import com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto;
import com.liquidnet.service.kylin.dto.param.PerformancePartnerVo;
import com.liquidnet.service.kylin.service.IReportPerformanceService;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ReportPerformanceController
* @Package com.liquidnet.client.admin.web.controller.zhengzai.kylin
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 11:33
*/
@Slf4j
@Controller
@RequestMapping("/kylin/report")
public class ReportPerformanceController extends BaseController {
private String prefix = "zhengzai/kylin/report";
@Autowired
private IReportPerformanceService reportPerformanceService;
@Autowired
private IKylinPerformancesAdminService kylinPerformancesAdminService;
@Autowired
private MongoTemplate mongoTemplate;
// @RequiresPermissions("kylin:report:getPerformanceData:view")
@GetMapping("/getPerformanceData")
public String getPerformanceDataView(String performanceId, ModelMap mmap)
{
mmap.put("currentDate", LocalDate.now());
mmap.put("performanceId", "");
return prefix + "/performanceData";
}
/**
* 查询演出列表
*/
@Log(title = "演出报表", businessType = BusinessType.LIST)
@RequiresPermissions("kylin:report:getPerformanceData:list")
@PostMapping("/getPerformanceData/list")
@ResponseBody
public AjaxResult provincelist(@RequestParam(value = "performanceId") @Validated String performanceId, ModelMap mmap)
{
//获取演出详情
// KylinPerformanceMisVo kylinPerformanceMisVo = kylinPerformancesAdminService.performanceDetails(performanceId);
PerformancePartnerVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), PerformancePartnerVo.class, PerformancePartnerVo.class.getSimpleName());
if(StringUtil.isNull(performanceData)||StringUtil.isNull(performanceData.getPerformancesId())){
return AjaxResult.error("演出Id:"+performanceId+"对应演出不存在!",performanceId);
}
HashMap<String,Object> hashMap = new HashMap();
log.info("ReportPerformanceController.getPerformanceData performanceId:{}",performanceId);
//获取按省统计数据
List<PerformanceProvinceDataDto> provinceDataList= reportPerformanceService.getProvinceDataList(performanceId);
List<PerformanceCityDataDto> cityDataList= reportPerformanceService.getCityDataList(performanceId);
List<PerformanceAgeDataDto> ageDataList= reportPerformanceService.getAgeDataList(performanceId);
List<PerformanceSexDataDto> sexDataList= reportPerformanceService.getSexDataList(performanceId);
//按年龄
// PerformanceAgeDataDto ageDataDto = PerformanceAgeDataDto.getNew();
// ageDataDto.setAge("19");
// ageDataDto.setTotalNumber(34555);
// ageDataList.add(ageDataDto);
// ageDataDto = PerformanceAgeDataDto.getNew();
// ageDataDto.setAge("20");
// ageDataDto.setTotalNumber(33444);
// ageDataList.add(ageDataDto);
//
// //按性别
// PerformanceSexDataDto sexDataDto = PerformanceSexDataDto.getNew();
// sexDataDto.setSex("男");
// sexDataDto.setTotalNumber(12345);
// sexDataList.add(sexDataDto);
// sexDataDto = PerformanceSexDataDto.getNew();
// sexDataDto.setSex("女");
// sexDataDto.setTotalNumber(99885);
// sexDataList.add(sexDataDto);
String perTitle = performanceData.getTitle();
hashMap.put("currentDate", LocalDate.now());
hashMap.put("performanceId", performanceId);
hashMap.put("perTitle", perTitle);
hashMap.put("provinceDataList",provinceDataList);
hashMap.put("cityDataList",cityDataList);
hashMap.put("ageDataList",ageDataList);
hashMap.put("sexDataList",sexDataList);
return AjaxResult.success(hashMap);
}
// /**
// * 查询演出列表
// */
//// @Log(title = "演出报表", businessType = BusinessType.LIST)
//// @RequiresPermissions("kylin:report:getPerformanceData:list")
// @PostMapping("/getPerformanceData/list")
// public String getPerformanceData(@RequestParam(value = "performanceId") @Validated String performanceId, ModelMap mmap)
// {
// log.info("ReportPerformanceController.getPerformanceData performanceId:{}",performanceId);
// //获取按省统计数据
// List<PerformanceProvinceDataDto> provinceDataList= reportPerformanceService.getProvinceDataList(performanceId);
// //
// List<PerformanceCityDataDto> cityDataList= reportPerformanceService.getCityDataList(performanceId);
// List<PerformanceAgeDataDto> ageDataList= reportPerformanceService.getAgeDataList(performanceId);
// List<PerformanceSexDataDto> sexDataDtos= reportPerformanceService.getSexDataList(performanceId);
//
// mmap.put("currentDate", LocalDate.now());
// mmap.put("performanceId", performanceId);
// mmap.put("provinceDataList",provinceDataList);
// mmap.put("cityDataList",cityDataList);
// mmap.put("ageDataList",ageDataList);
// mmap.put("sexDataDtos",sexDataDtos);
// return prefix + "/performanceData";
// }
}
<!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 :: select2-css" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="data-form">
<div class="select-list">
<ul>
<input type="text" name="memberId" hidden="hidden" th:value="${memberId}" readonly/>
<li>
状态:<select name="state" th:with="type=${@dict.getType('zhengzai_coupon_code_state')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></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="resetPre()"><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-warning" onclick="$.table.exportExcel()" shiro:hasPermission="adam:member:export:code">
<i class="fa fa-download"></i> 导出
</a>
<a class="btn btn-primary multiple disabled" onclick="invalidHandler()" shiro:hasPermission="adam:member:invalid:code">
<i class="fa fa-edit"></i> 批量失效
</a>
<!-- <a class="btn btn-danger multiple disabled" onclick="recoverHandler()" shiro:hasPermission="adam:member:recover:code">-->
<!-- <i class="fa fa-remove"></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" />
<th:block th:include="include :: select2-js" />
<script th:inline="javascript">
var invalidFlag = [[${@permission.hasPermi('adam:member:invalid:code')}]];
var recoverFlag = [[${@permission.hasPermi('adam:member:recover:code')}]];
var datas = [[${@dict.getType('zhengzai_coupon_code_state')}]];// 样例:[{"dictLabel":"未支付","dictValue":"0"},{"dictLabel":"已支付","dictValue":"1"},{"dictLabel":"已关闭","dictValue":"2"}]
var memberId = [[${memberId}]];
var prefix = ctx + "adam/member";
$(function() {
var options = {
url: prefix + "/list_code",
exportUrl: prefix + "/export_code",
detailUrl: ctx + "adam/order/orderList/detail/{id}",
sortName: "code",
sortOrder: "asc",
modalName: "会员码",
columns: [{
checkbox: true
},
{
field: 'code',
title: '会员码'
},
{
field: 'expireAt',
title: '到期时间'
},
{
field: 'useAt',
title: '使用时间'
},
{
field: 'useOrderNo',
title: '兑换订单号',
formatter: function(value, row, index) {
var actions = [];
if ($.common.isEmpty(value)) {
actions.push('<a href="javascript:void(0)">-</a>');
} else {
actions.push('<a href="javascript:void(0)" onclick="$.operate.detailTab(\'' + value + '\')">' + value + '</a>');
}
return actions.join('');
}
},
{
field: 'state',
title: '状态',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(datas, value);
}
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
if (row.state === 0) {
actions.push('<a class="btn btn-primary btn-xs ' + (invalidFlag && row.state===0) + '" href="javascript:void(0)" onclick="invalidHandler(\'' + row.code + '\')"><i class="fa fa-edit"></i>失效</a> ');
} else if (row.state === 1) {
// actions.push('<a class="btn btn-danger btn-xs ' + (recoverFlag && row.state==0) + '" href="javascript:void(0)" onclick="recoverHandler(\'' + row.code + '\')"><i class="fa fa-remove"></i>退回</a>');
}
return actions.join('');
}
}]
};
$.table.init(options);
});
function resetPre() {
$.form.reset();
}
function invalidHandler(code) {
let invalidCodeUrl = prefix + '/invalid_code';
if (code !== null && code !== undefined) {
var data = {"memberId": memberId,"codes": code};
$.operate.submit(invalidCodeUrl, "post", "json", data);
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
var data = {"memberId": memberId, "codes": rows.join()};
$.operate.batchProcessing(invalidCodeUrl, '失效', data);
}
}
function recoverHandler(code) {
let recoverCodeUrl = prefix + '/recover_code';
if (code !== null && code !== undefined) {
var data = {"memberId": memberId,"codes": code};
$.operate.submit(recoverCodeUrl, "post", "json", data);
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
var data = {"memberId": memberId, "codes": rows.join()};
$.operate.batchProcessing(recoverCodeUrl, '失效', data);
}
}
</script>
</body>
</html>
\ No newline at end of file
package com.liquidnet.client.admin.zhengzai.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.entity.AdamMemberCodeBatch;
public interface IAdamMemberCodeBatchAdminService extends IService<AdamMemberCodeBatch> {
}
package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeBatchAdminService;
import com.liquidnet.service.adam.entity.AdamMemberCodeBatch;
import com.liquidnet.service.adam.mapper.AdamMemberCodeBatchMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class AdamMemberCodeBatchAdminServiceImpl extends ServiceImpl<AdamMemberCodeBatchMapper, AdamMemberCodeBatch> implements IAdamMemberCodeBatchAdminService {
}
...@@ -3,6 +3,7 @@ package com.liquidnet.client.admin.zhengzai.adam.service.impl; ...@@ -3,6 +3,7 @@ package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService; import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
...@@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.IntStream; import java.util.stream.IntStream;
...@@ -29,6 +31,8 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh ...@@ -29,6 +31,8 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
@Override @Override
public boolean edit(AdamMemberRightsBuildParam param) { public boolean edit(AdamMemberRightsBuildParam param) {
String loginName = ShiroUtils.getLoginName();
LocalDateTime now = LocalDateTime.now();
String mrightsId = param.getMrightsId(); String mrightsId = param.getMrightsId();
boolean saveOrUpadateRst, isAddFlag = StringUtils.isEmpty(mrightsId); boolean saveOrUpadateRst, isAddFlag = StringUtils.isEmpty(mrightsId);
...@@ -44,6 +48,8 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh ...@@ -44,6 +48,8 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
saveOrUpdateInfo.setLabel(param.getLabel()); saveOrUpdateInfo.setLabel(param.getLabel());
saveOrUpdateInfo.setCover(param.getCover()); saveOrUpdateInfo.setCover(param.getCover());
saveOrUpdateInfo.setDetail(param.getDetail()); saveOrUpdateInfo.setDetail(param.getDetail());
saveOrUpdateInfo.setOperator(loginName);
saveOrUpdateInfo.setCreatedAt(now);
saveOrUpadateRst = adamMemberRightsMapper.insert(saveOrUpdateInfo) > 0; saveOrUpadateRst = adamMemberRightsMapper.insert(saveOrUpdateInfo) > 0;
} else { } else {
...@@ -52,12 +58,16 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh ...@@ -52,12 +58,16 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
.eq(AdamMemberRights::getMrightsId, param.getMrightsId()); .eq(AdamMemberRights::getMrightsId, param.getMrightsId());
saveOrUpdateInfo.setState(param.getState()); saveOrUpdateInfo.setState(param.getState());
saveOrUpdateInfo.setSeqNo(param.getSeqNo()); saveOrUpdateInfo.setOperator(loginName);
saveOrUpdateInfo.setTitle(param.getTitle()); saveOrUpdateInfo.setUpdatedAt(now);
saveOrUpdateInfo.setSubTitle(param.getSubTitle()); if (param.getState() != 2) {
saveOrUpdateInfo.setLabel(param.getLabel()); saveOrUpdateInfo.setSeqNo(param.getSeqNo());
saveOrUpdateInfo.setCover(param.getCover()); saveOrUpdateInfo.setTitle(param.getTitle());
saveOrUpdateInfo.setDetail(param.getDetail()); saveOrUpdateInfo.setSubTitle(param.getSubTitle());
saveOrUpdateInfo.setLabel(param.getLabel());
saveOrUpdateInfo.setCover(param.getCover());
saveOrUpdateInfo.setDetail(param.getDetail());
}
saveOrUpadateRst = adamMemberRightsMapper.update(saveOrUpdateInfo, updateWrapper) > 0; saveOrUpadateRst = adamMemberRightsMapper.update(saveOrUpdateInfo, updateWrapper) > 0;
} }
...@@ -98,7 +108,6 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh ...@@ -98,7 +108,6 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
redisUtil.set(AdamRedisConst.INFO_MEMBER_RIGHTS.concat(param.getMemberId()), vos); redisUtil.set(AdamRedisConst.INFO_MEMBER_RIGHTS.concat(param.getMemberId()), vos);
} }
return saveOrUpadateRst; return saveOrUpadateRst;
} }
} }
...@@ -171,7 +171,7 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa ...@@ -171,7 +171,7 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
// CandyMgtCoupon updateMgtCoupon = new CandyMgtCoupon(); // CandyMgtCoupon updateMgtCoupon = new CandyMgtCoupon();
updateMgtCoupon.setMcouponId(parameter.getMrightsId()); updateMgtCoupon.setMcouponId(parameter.getMrightsId());
updateMgtCoupon.setCouponId(couponId);
updateMgtCoupon.setEventAmt(parameter.getEventAmt()); updateMgtCoupon.setEventAmt(parameter.getEventAmt());
updateMgtCoupon.setOperator(operator); updateMgtCoupon.setOperator(operator);
updateMgtCoupon.setUpdatedAt(nowTime); updateMgtCoupon.setUpdatedAt(nowTime);
...@@ -184,6 +184,7 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa ...@@ -184,6 +184,7 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
updateCoupon.setExclusive(1); updateCoupon.setExclusive(1);
updateMgtCoupon.setMcouponId(parameter.getMrightsId()); updateMgtCoupon.setMcouponId(parameter.getMrightsId());
updateMgtCoupon.setCouponId(couponId);
updateMgtCoupon.setOperator(operator); updateMgtCoupon.setOperator(operator);
updateMgtCoupon.setUpdatedAt(nowTime); updateMgtCoupon.setUpdatedAt(nowTime);
updateMgtCoupon.setState(2); updateMgtCoupon.setState(2);
...@@ -302,9 +303,10 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa ...@@ -302,9 +303,10 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
.eq(CandyCoupon::getExclusive, updateCoupon.getExclusive()); .eq(CandyCoupon::getExclusive, updateCoupon.getExclusive());
int updateCt = candyCouponMapper.update(updateCoupon, couponLambdaUpdateWrapper); int updateCt = candyCouponMapper.update(updateCoupon, couponLambdaUpdateWrapper);
LambdaUpdateWrapper<CandyMgtCoupon> mgtCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyMgtCoupon.class) LambdaUpdateWrapper<CandyMgtCoupon> mgtCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyMgtCoupon.class);
.eq(CandyMgtCoupon::getMcouponId, updateMgtCoupon.getMcouponId()) mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getMcouponId, updateMgtCoupon.getMcouponId());
.eq(CandyMgtCoupon::getState, updateCoupon.getExclusive() == 1 ? 10 : 0); mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getCouponId, updateMgtCoupon.getCouponId());
mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getState, updateCoupon.getExclusive() == 1 ? 10 : 0);
updateCt += candyMgtCouponMapper.update(updateMgtCoupon, mgtCouponLambdaUpdateWrapper); updateCt += candyMgtCouponMapper.update(updateMgtCoupon, mgtCouponLambdaUpdateWrapper);
......
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto;
import com.liquidnet.service.kylin.mapper.ReportPerformanceMapper;
import com.liquidnet.service.kylin.service.IReportPerformanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ReportPerformanceServiceImpl
* @Package com.liquidnet.client.admin.zhengzai.kylin.service.impl
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 11:30
*/
@Slf4j
@Service
public class ReportPerformanceServiceImpl implements IReportPerformanceService {
@Autowired
private ReportPerformanceMapper reportPerformanceMapper;
@Override
public List<PerformanceProvinceDataDto> getProvinceDataList(String performanceId) {
return reportPerformanceMapper.getProvinceDataList(performanceId);
}
@Override
public List<PerformanceCityDataDto> getCityDataList(String performanceId) {
return reportPerformanceMapper.getCityDataList(performanceId);
}
@Override
public List<PerformanceAgeDataDto> getAgeDataList(String performanceId) {
return reportPerformanceMapper.getAgeDataList(performanceId);
}
@Override
public List<PerformanceSexDataDto> getSexDataList(String performanceId) {
return reportPerformanceMapper.getSexDataList(performanceId);
}
}
package com.liquidnet.service.adam.entity;
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 2021-09-24
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class AdamMemberCodeBatch implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 会员码批次号
*/
private String batchNo;
/**
* ~`adam_member.member_id`
*/
private String memberId;
/**
* ~`adam_member_price.member_price_id`
*/
private String memberPriceId;
/**
* 会员卡名称~`adam_member.name`
*/
private String memberName;
/**
* 套餐包名称
*/
private String memberCombo;
/**
* 生成数量
*/
private Integer genNum;
/**
* 使用数量
*/
private Integer useNum;
/**
* 描述
*/
private String describe;
/**
* 有效期(单位天)
*/
private Integer validity;
/**
* 生效时间
*/
private LocalDateTime effectAt;
/**
* 失效时间
*/
private LocalDateTime expireAt;
/**
* 状态:0-INIT,1-NORMAL,2-INVALID
*/
private Integer state;
/**
* 操作人
*/
private String operator;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private String comment;
}
...@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.entity; ...@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -65,6 +67,15 @@ public class AdamMemberRights implements Serializable { ...@@ -65,6 +67,15 @@ public class AdamMemberRights implements Serializable {
*/ */
private String detail; private String detail;
/**
* 操作人
*/
private String operator;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private String comment; private String comment;
......
package com.liquidnet.service.adam.mapper;
import com.liquidnet.service.adam.entity.AdamMemberCodeBatch;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 会员码批次记录 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-09-24
*/
public interface AdamMemberCodeBatchMapper extends BaseMapper<AdamMemberCodeBatch> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.adam.mapper.AdamMemberCodeBatchMapper">
</mapper>
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceAgeDataDto
* @Package com.liquidnet.service.kylin.dao.report
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:58
*/
@Data
public class PerformanceAgeDataDto implements Serializable {
private String performanceId;
private String age;
private long totalNumber;
private static final PerformanceAgeDataDto obj = new PerformanceAgeDataDto();
public static PerformanceAgeDataDto getNew() {
try {
return (PerformanceAgeDataDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceAgeDataDto();
}
}
}
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceCityDataDto
* @Package com.liquidnet.service.kylin.dao.report
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:58
*/
@Data
public class PerformanceCityDataDto implements Serializable {
private String performanceId;
private String cityName;
private long totalNumber;
private static final PerformanceCityDataDto obj = new PerformanceCityDataDto();
public static PerformanceCityDataDto getNew() {
try {
return (PerformanceCityDataDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceCityDataDto();
}
}
}
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceProvinceData
* @Package com.liquidnet.service.kylin.dao.report
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:57
*/
@Data
public class PerformanceProvinceDataDto implements Serializable {
private String performanceId;
private String province;
private long totalNumber;
private static final PerformanceProvinceDataDto obj = new PerformanceProvinceDataDto();
public static PerformanceProvinceDataDto getNew() {
try {
return (PerformanceProvinceDataDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceProvinceDataDto();
}
}
}
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceSexDataDto
* @Package com.liquidnet.service.kylin.dao.report
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:58
*/
@Data
public class PerformanceSexDataDto implements Serializable {
private String sex;
private long totalNumber;
private static final PerformanceSexDataDto obj = new PerformanceSexDataDto();
public static PerformanceSexDataDto getNew() {
try {
return (PerformanceSexDataDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceSexDataDto();
}
}
}
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto;
import com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto;
import com.liquidnet.service.kylin.entity.KylinPerformances;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ReportPerformanceMapper
* @Package com.liquidnet.service.kylin.mapper
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/23 10:54
*/
public interface ReportPerformanceMapper extends BaseMapper<KylinPerformances> {
/**
* 获取按省统计数据
* @param performanceId
* @return
*/
List<PerformanceProvinceDataDto> getProvinceDataList(String performanceId);
/**
* 获取按城市统计数据
* @param performanceId
* @return
*/
List<PerformanceCityDataDto> getCityDataList(String performanceId);
/**
* 获取按年龄统计数据
* @param performanceId
* @return
*/
List<PerformanceAgeDataDto> getAgeDataList(String performanceId);
/**
* 获取按性别统计数据
* @param performanceId
* @return
*/
List<PerformanceSexDataDto> getSexDataList(String performanceId);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.ReportPerformanceMapper">
<resultMap id="getProvinceDataListResult" type="com.liquidnet.service.kylin.dao.report.PerformanceProvinceDataDto">
<result column="performance_id" property="performanceId"/>
<result column="province" property="province"/>
<result column="total_number" property="totalNumber"/>
</resultMap>
<resultMap id="getCityDataListResult" type="com.liquidnet.service.kylin.dao.report.PerformanceCityDataDto">
<result column="performance_id" property="performanceId"/>
<result column="city_name" property="cityName"/>
<result column="total_number" property="totalNumber"/>
</resultMap>
<resultMap id="getAgeDataListResult" type="com.liquidnet.service.kylin.dao.report.PerformanceAgeDataDto">
<result column="performance_id" property="performanceId"/>
<result column="age" property="age"/>
<result column="total_number" property="totalNumber"/>
</resultMap>
<resultMap id="getSexDataListResult" type="com.liquidnet.service.kylin.dao.report.PerformanceSexDataDto">
<result column="sex" property="sex"/>
<result column="total_number" property="totalNumber"/>
</resultMap>
<!-- 演出按省统计-->
<select id="getProvinceDataList" parameterType="java.lang.String" resultMap="getProvinceDataListResult">
select x.* from (
SELECT kotr.performance_id AS 'performance_id',
ifnull(ca.province, '未知') province,
count(1) total_number
FROM kylin_order_ticket_relations kotr
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
inner join kylin_order_ticket_entities kote on kot.order_tickets_id = kote.order_id
left join sys_dict_id_card_area ca
on substr(kote.enter_id_code, 1, 6)= ca.code
WHERE 1 > 0
and kotr.performance_id = ${performanceId}
and kots.`status` in (1, 3, 6)
and kot.coupon_type = 'no'
group by kotr.performance_id,ca.province
) x order by x.total_number desc
</select>
<!-- 演出按城市统计-->
<select id="getCityDataList" parameterType="java.lang.String" resultMap="getCityDataListResult">
select x.* from (
SELECT
kotr.performance_id AS 'performance_id',
ifnull(ca.pre_city,'未知') city_name,
count(1) total_number
FROM
kylin_order_ticket_relations kotr
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
inner join kylin_order_ticket_entities kote on kot.order_tickets_id = kote.order_id
left join sys_dict_id_card_area ca on substr(kote.enter_id_code,1,6) = ca.code
WHERE 1>0 and kotr.performance_id = #{performanceId}
and kots.`status` in(1,3,6)
and kot.coupon_type ='no'
group by kotr.performance_id,ca.pre_city
) x order by x.total_number desc
</select>
<!-- 演出按年龄统计-->
<select id="getAgeDataList" parameterType="java.lang.String" resultMap="getAgeDataListResult">
select * from (
SELECT kotr.performance_id AS 'performance_id',
substr(curdate(), 1, 4) - substr(kote.enter_id_code, 7, 4) age,
count(1) total_number
FROM kylin_order_ticket_relations kotr
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
inner join kylin_order_ticket_entities kote on kot.order_tickets_id = kote.order_id
WHERE 1 > 0
and kotr.performance_id = #{performanceId}
and kots.`status` in (1, 3, 6)
and kot.coupon_type = 'no'
and length(kote.enter_id_code)=18
group by kotr.performance_id, substr(curdate(), 1, 4) - substr(kote.enter_id_code, 7, 4)
)x order by x.age
</select>
<!-- 演出按性别统计-->
<select id="getSexDataList" parameterType="java.lang.String" resultMap="getSexDataListResult">
select x.sex,count(1) total_number from (
SELECT kotr.performance_id AS 'performance_id',
case when substr(kote.enter_id_code,17,1)%2=0 then '女' else '男' end sex
FROM kylin_order_ticket_relations kotr
inner join kylin_order_tickets AS kot on kotr.order_id = kot.order_tickets_id
inner JOIN kylin_order_ticket_status AS kots ON kots.order_id = kot.order_tickets_id
inner join kylin_order_ticket_entities kote on kot.order_tickets_id = kote.order_id
WHERE 1 > 0
and kotr.performance_id = ${performanceId}
and kots.`status` in (1, 3, 6)
and kot.coupon_type = 'no'
and length(kote.enter_id_code)=18
)x group by x.sex
</select>
</mapper>
...@@ -133,7 +133,7 @@ create table adam_addresses ...@@ -133,7 +133,7 @@ create table adam_addresses
province varchar(60) not null comment '省份', province varchar(60) not null comment '省份',
city varchar(60) not null comment '城市', city varchar(60) not null comment '城市',
county varchar(60) not null comment '区县', county varchar(60) not null comment '区县',
address text not null comment '详细地址', address text not null comment '详细地址',
is_default boolean not null default false comment '是否为默认:0-否,1-是,第一个默认1', is_default boolean not null default false comment '是否为默认:0-否,1-是,第一个默认1',
state tinyint not null comment '状态:0-INIT,1-NORMAL,2-INVALID', state tinyint not null comment '状态:0-INIT,1-NORMAL,2-INVALID',
created_at datetime(3) not null, created_at datetime(3) not null,
...@@ -356,7 +356,7 @@ alter table adam_member_price add price_special decimal(8, 2) null comment '特 ...@@ -356,7 +356,7 @@ alter table adam_member_price add price_special decimal(8, 2) null comment '特
# 会员码表调整 # 会员码表调整
alter table adam_member_code modify state tinyint null comment '状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]'; alter table adam_member_code modify state tinyint null comment '状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]';
create index idx_amember_code_id on adam_member_code (code); create index idx_amember_code_id on adam_member_code (code);
alter table adam_member_code add validity tinyint null comment '有效期(单位天)' after state; alter table adam_member_code add validity int null comment '有效期(单位天)' after state;
alter table adam_member_code add effect_at datetime(3) null comment '生效时间' after validity; alter table adam_member_code add effect_at datetime(3) null comment '生效时间' after validity;
alter table adam_member_code add expire_at datetime(3) null comment '过期时间' after effect_at; alter table adam_member_code add expire_at datetime(3) null comment '过期时间' after effect_at;
alter table adam_member_code add operator varchar(64) null comment 'type=2时记录创建人' after expire_at; alter table adam_member_code add operator varchar(64) null comment 'type=2时记录创建人' after expire_at;
...@@ -409,6 +409,11 @@ create table adam_member_rights ...@@ -409,6 +409,11 @@ create table adam_member_rights
label varchar(50) comment '标注', label varchar(50) comment '标注',
cover varchar(255) comment '图片标识', cover varchar(255) comment '图片标识',
detail text comment '详情内容', detail text comment '详情内容',
operator varchar(64) comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255) comment varchar(255)
) engine = InnoDB comment '会员权益配置'; ) engine = InnoDB comment '会员权益配置';
create unique index uidx_adam_member_rights_id on adam_member_rights (mrights_id); create unique index uidx_adam_member_rights_id on adam_member_rights (mrights_id);
...@@ -424,11 +429,35 @@ create table adam_user_busi_acct ...@@ -424,11 +429,35 @@ create table adam_user_busi_acct
work varchar(64) comment '业务服务模块', work varchar(64) comment '业务服务模块',
ppwd varchar(64) comment '业务服务密码', ppwd varchar(64) comment '业务服务密码',
state tinyint comment '1-NORMAL,2-INVALID', state tinyint comment '1-NORMAL,2-INVALID',
created_at datetime not null, created_at datetime(3) not null,
updated_at datetime, updated_at datetime(3),
comment text comment text
) engine = InnoDB comment '用户业务服务账号表'; ) engine = InnoDB comment '用户业务服务账号表';
create index idx_adam_user_busi_acct_uid on adam_user_busi_acct (uid); create index idx_adam_user_busi_acct_uid on adam_user_busi_acct (uid);
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------|20210924会员码管理
drop table if exists adam_member_code_batch;
create table adam_member_code_batch
(
mid bigint unsigned auto_increment primary key,
batch_no varchar(64) not null comment '会员码批次号',
member_id varchar(64) not null comment '~`adam_member.member_id`',
member_price_id varchar(64) not null comment '~`adam_member_price.member_price_id`',
member_name varchar(80) comment '会员卡名称~`adam_member.name`',
member_combo varchar(80) comment '套餐包名称',
gen_num int comment '生成数量',
use_num int comment '使用数量',
`describe` varchar(64) comment '描述',
validity int comment '有效期(单位天)',
effect_at datetime(3) null comment '生效时间',
expire_at datetime(3) null comment '失效时间',
state tinyint comment '状态[0-INIT|1-NORMAL|2-INVALID]',
operator varchar(64) comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255)
) engine = InnoDB comment '会员码批次记录';
create index idx_adam_member_code_batch_no on adam_member_code_batch (batch_no);
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
...@@ -129,6 +129,11 @@ public class AdamLoginController { ...@@ -129,6 +129,11 @@ public class AdamLoginController {
} }
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
if (null == userInfoVo) {
log.warn("Cancelled mobile:{}", mobile);
return ResponseDto.failure(ErrorMapping.get("10024"));
}
String passwdMd5 = DigestUtils.md5DigestAsHex(password.toLowerCase().concat(passwdSalt).getBytes(StandardCharsets.UTF_8)); String passwdMd5 = DigestUtils.md5DigestAsHex(password.toLowerCase().concat(passwdSalt).getBytes(StandardCharsets.UTF_8));
if (!passwdMd5.equals(userInfoVo.getPasswd())) {// 密码校验 if (!passwdMd5.equals(userInfoVo.getPasswd())) {// 密码校验
return ResponseDto.failure(ErrorMapping.get("10013")); return ResponseDto.failure(ErrorMapping.get("10013"));
...@@ -164,6 +169,11 @@ public class AdamLoginController { ...@@ -164,6 +169,11 @@ public class AdamLoginController {
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
if (!toRegister && null == userInfoVo) {
log.warn("Cancelled mobile:{}", mobile);
return ResponseDto.failure(ErrorMapping.get("10024"));
}
if (0 == userInfoVo.getIsComplete() && null != skip && 1 == skip) { if (0 == userInfoVo.getIsComplete() && null != skip && 1 == skip) {
// 根据skip值,设置IsComplete(考虑到已存在用户未完善信息的情况,这里只对返回数据单独设置IsComplete) // 根据skip值,设置IsComplete(考虑到已存在用户未完善信息的情况,这里只对返回数据单独设置IsComplete)
userInfoVo.setIsComplete(1); userInfoVo.setIsComplete(1);
...@@ -196,6 +206,11 @@ public class AdamLoginController { ...@@ -196,6 +206,11 @@ public class AdamLoginController {
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
if (!toRegister && null == userInfoVo) {
log.warn("Cancelled mobile:{}", mobile);
return ResponseDto.failure(ErrorMapping.get("10024"));
}
AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew(); AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew();
loginInfoVo.setToken(this.ssoProcess(userInfoVo)); loginInfoVo.setToken(this.ssoProcess(userInfoVo));
loginInfoVo.setUserInfo(userInfoVo); loginInfoVo.setUserInfo(userInfoVo);
...@@ -269,7 +284,13 @@ public class AdamLoginController { ...@@ -269,7 +284,13 @@ public class AdamLoginController {
String uid = adamRdmService.getUidByPlatformOpenId(parameter.getPlatform(), parameter.getOpenId()); String uid = adamRdmService.getUidByPlatformOpenId(parameter.getPlatform(), parameter.getOpenId());
if (StringUtils.isEmpty(uid)) return ResponseDto.failure(ErrorMapping.get("10006")); if (StringUtils.isEmpty(uid)) return ResponseDto.failure(ErrorMapping.get("10006"));
loginInfoVo.setUserInfo(adamRdmService.getUserInfoVoByUid(uid)); AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
if (null == userInfoVo) {
log.warn("Cancelled openId:{}", parameter.getOpenId());
return ResponseDto.failure(ErrorMapping.get("10024"));
}
loginInfoVo.setUserInfo(userInfoVo);
loginInfoVo.setUserMemberVo(adamRdmService.getUserMemberVoByUid(uid)); loginInfoVo.setUserMemberVo(adamRdmService.getUserMemberVoByUid(uid));
} else {// 新账号注册 } else {// 新账号注册
ResponseDto<AdamLoginInfoVo> checkSmsCodeDto = this.checkSmsCode(parameter.getMobile(), parameter.getCode()); ResponseDto<AdamLoginInfoVo> checkSmsCodeDto = this.checkSmsCode(parameter.getMobile(), parameter.getCode());
......
...@@ -114,7 +114,7 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -114,7 +114,7 @@ public class AdamUserServiceImpl implements IAdamUserService {
LinkedList<Object[]> initUserObjs = CollectionUtil.linkedListObjectArr(), LinkedList<Object[]> initUserObjs = CollectionUtil.linkedListObjectArr(),
initUserInfoObjs = CollectionUtil.linkedListObjectArr(), initUserInfoObjs = CollectionUtil.linkedListObjectArr(),
initThirdPartObjs = CollectionUtil.linkedListObjectArr(); initThirdPartObjs = CollectionUtil.linkedListObjectArr();
if (StringUtils.isEmpty(uid)) {// 手机号未注册 if (StringUtils.isEmpty(uid)) {// 不存在UID,手机号未注册
userInfoVo = AdamUserInfoVo.getNew(); userInfoVo = AdamUserInfoVo.getNew();
userInfoVo.setUid(IDGenerator.nextSnowId() + ""); userInfoVo.setUid(IDGenerator.nextSnowId() + "");
...@@ -154,12 +154,16 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -154,12 +154,16 @@ public class AdamUserServiceImpl implements IAdamUserService {
); );
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s); log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
} else {// 手机号已注册 } else {// 存在UID,手机号已注册
// 判断已注册用户是否绑定同平台的第三方账号 // 判断已注册用户是否绑定同平台的第三方账号
AdamThirdPartInfoVo thirdPartVo = adamRdmService.getThirdPartVoByUidPlatform(uid, param.getPlatform()); AdamThirdPartInfoVo thirdPartVo = adamRdmService.getThirdPartVoByUidPlatform(uid, param.getPlatform());
if (null == thirdPartVo) {// 未绑定 if (null == thirdPartVo) {// 未绑定
this.bindTpa(uid, param);
userInfoVo = adamRdmService.getUserInfoVoByUid(uid); userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
if (null == userInfoVo) {
log.warn("Cancelled mobile:{}", param.getMobile());
return ResponseDto.failure(ErrorMapping.get("10024"));
}
this.bindTpa(uid, param);
} else if (thirdPartVo.getOpenId().equals(param.getOpenId())) { } else if (thirdPartVo.getOpenId().equals(param.getOpenId())) {
userInfoVo = adamRdmService.getUserInfoVoByUid(uid); userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
} else { } else {
...@@ -273,9 +277,9 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -273,9 +277,9 @@ public class AdamUserServiceImpl implements IAdamUserService {
objsAddresses = CollectionUtil.linkedListObjectArr(); objsAddresses = CollectionUtil.linkedListObjectArr();
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid); // AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
//
adamRdmService.delUidByMobile(userInfoVo.getMobile()); // adamRdmService.delUidByMobile(userInfoVo.getMobile());
List<AdamThirdPartInfoVo> thirdPartInfoVos = adamRdmService.getThirdPartVoListByUid(uid); List<AdamThirdPartInfoVo> thirdPartInfoVos = adamRdmService.getThirdPartVoListByUid(uid);
if (!CollectionUtils.isEmpty(thirdPartInfoVos)) { if (!CollectionUtils.isEmpty(thirdPartInfoVos)) {
thirdPartInfoVos.forEach(r -> { thirdPartInfoVos.forEach(r -> {
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
10021=签名不合规 10021=签名不合规
10022=头像不合规 10022=头像不合规
10023=背景图不合规 10023=背景图不合规
10024=该账号已被主动注销
10101=姓名或身份证件号无效 10101=姓名或身份证件号无效
......
adam_user.add=INSERT INTO adam_user (`uid`, mobile, `state`, is_complete, created_at) VALUES (?,?,?,?,?) adam_user.add=INSERT INTO adam_user (`uid`, mobile, `state`, is_complete, created_at) VALUES (?,?,?,?,?)
adam_user.complete=UPDATE adam_user SET is_complete=?, updated_at=? WHERE `uid`=? adam_user.complete=UPDATE adam_user SET is_complete=?, updated_at=? WHERE `uid`=?
adam_user.edit.mobile=UPDATE adam_user SET mobile=?, updated_at=? WHERE `uid`=? adam_user.edit.mobile=UPDATE adam_user SET mobile=?, updated_at=? WHERE `uid`=?
adam_user.close=UPDATE adam_user SET `state`=2, mobile=concat(mobile,'_',curtime()), updated_at=?, closed_at=? WHERE `uid`=? #adam_user.close=UPDATE adam_user SET `state`=2, mobile=concat(mobile,'_',curtime()), updated_at=?, closed_at=? WHERE `uid`=?
adam_user.close=UPDATE adam_user SET `state`=2, updated_at=?, closed_at=? WHERE `uid`=?
# ---------------------------------------------------- # ----------------------------------------------------
adam_user_info.add=INSERT INTO adam_user_info (`uid`, nickname, avatar, qr_code) VALUES (?,?,?,?) adam_user_info.add=INSERT INTO adam_user_info (`uid`, nickname, avatar, qr_code) VALUES (?,?,?,?)
......
...@@ -172,8 +172,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -172,8 +172,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (!isMember) { if (!isMember) {
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限 return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
} }
} } else {
else {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1 && ticketData.getIsMember() == 1) { if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1 && ticketData.getIsMember() == 1) {
// 会员购买逻辑 // 会员购买逻辑
memberType = 1; memberType = 1;
...@@ -266,6 +265,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -266,6 +265,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (isTrueName == 1) { if (isTrueName == 1) {
for (String enterId : payOrderParam.getEnterIdList()) { for (String enterId : payOrderParam.getEnterIdList()) {
AdamEntersVo adamEnters = orderUtils.getEnters(uid, enterId);//feignAdamBaseClient.queryEnters(enterId, uid).getData(); AdamEntersVo adamEnters = orderUtils.getEnters(uid, enterId);//feignAdamBaseClient.queryEnters(enterId, uid).getData();
if (adamEnters == null) {
return ResponseDto.failure("入场人数据错误");
}
entersVoList.add(adamEnters); entersVoList.add(adamEnters);
if (isStudent == 1) { if (isStudent == 1) {
int age = IDCard.getAgeByIdCard(adamEnters.getIdCard()); int age = IDCard.getAgeByIdCard(adamEnters.getIdCard());
......
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