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

Commit f46be968 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/master' into dev_coupon_member

parents 9571ee5c 51359b3c
-- 添加积分券 --
ALTER TABLE stone_score_items ADD simple_type tinyint DEFAULT 0 COMMENT '类别(区别于TYPE字段)';
......@@ -22,6 +22,8 @@ public class AdamMemberJoinusVo implements java.io.Serializable, Cloneable {
private Integer state;
@ApiModelProperty(position = 16, value = "权益详情[200]", example = "加入摩登天空会员您可享受到.....")
private String interestsDetail;
@ApiModelProperty(position = 17, value = "会员ID", example = "123456")
private String memberNo;
private static final AdamMemberJoinusVo obj = new AdamMemberJoinusVo();
......
......@@ -8,6 +8,7 @@ import com.liquidnet.service.adam.entity.AdamUserMember;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.time.LocalDateTime;
......@@ -36,6 +37,11 @@ public class AdamUserMemberVo implements Serializable, Cloneable {
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt;
public String getMemberNo() {
// return memberNo;
return StringUtils.leftPad(memberNo, 7, "0");
}
public static final LocalDateTime spotTime = LocalDateTime.parse("2021-10-14 21:30:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
private static final AdamUserMemberVo obj = new AdamUserMemberVo();
......
......@@ -2,17 +2,22 @@ package com.liquidnet.service.stone.constant;
public class StoneConstant {
//ctx
private static final String CTX="stone:";
private static final String CTX = "stone:";
//user
public static final String USER=CTX.concat("user:");
public static final String USER = CTX.concat("user:");
//item
public static final String ITEM=CTX.concat("item:");
public static final String ITEM = CTX.concat("item:");
//logsList 积分日志列表
public static final String LOGS_LIST=ITEM.concat("logs:list:");
public static final String LOGS_LIST = ITEM.concat("logs:list:");
//orderList 积分订单列表
public static final String ORDER_LIST=ITEM.concat("order:list:");
public static final String ORDER_LIST = ITEM.concat("order:list:");
//orderList 积分订单列表
public static final String ORDER_DETAILS=ITEM.concat("order:details:");
public static final String ORDER_DETAILS = ITEM.concat("order:details:");
//商品列表
public static final String ITEM_LIST = ITEM.concat("list");
//商品列表分类
public static final String ITEM_LIST_SIMPLE = ITEM.concat("list:simpleType:");
//剩余库存
public static final String SURPLUS_GENERAL = ":surplusGeneral";
......
......@@ -15,6 +15,8 @@ public class StoneItemBuildParam {
private String itemId;
@ApiModelProperty(required = true, value = "目标类型[1-券|11-商品维度|21-演出维度]", example = "1")
private Integer type;
@ApiModelProperty(required = false, value = "前端暂定 0为默认值 无条件")
private Integer simpleType;
@NotBlank(message = "目标物品不能为空")
@ApiModelProperty(value = "目标物品id", example = "1")
private String targetId;
......
......@@ -20,4 +20,6 @@ public class StoneListParam {
*/
@ApiModelProperty(required = false, value = "状态[1-券]", example = "1")
private Integer type;
@ApiModelProperty(required = false, value = "前端定义 0位默认值 无条件", example = "0")
private Integer simpleType;
}
......@@ -21,6 +21,8 @@ public interface IStoneScoreItemsService {
PageInfo<List<StoneItemListVo>> itemList(Integer page, Integer size);
PageInfo<List<StoneItemListVo>> itemListSimpleType(Integer simpleType ,Integer page, Integer size);
ResponseDto<StoneScoreItemVo> itemDetails(String itemId);
}
......@@ -55,9 +55,9 @@ public class StoneOrderListVo implements Serializable, Cloneable {
}
}
public StoneOrderListVo copy(StoneScoreOrder source,String img,String uid) {
public StoneOrderListVo copy(StoneScoreOrder source, String img, String uid) {
if (null == source) return this;
this.setOrderId(source.getItemId());
this.setOrderId(source.getOrderId());
this.setImg(img);
this.setUid(uid);
this.setTargetTitle(source.getTargetTitle());
......
......@@ -39,6 +39,7 @@ public class SweetConstant {
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_ESTIMATEDNUM = "sweet:integralActivity:estimatedNum:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_TOTAL_PRIZE_NUM = "sweet:integralActivity:totalPrizeNum:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_BLACK = "sweet:integralActivity:drawBlack";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_WHITE = "sweet:integralActivity:drawWhite";
// 答题活动
public final static String REDIS_KEY_SWEET_ANSWER_PHONE = "sweet:answer:phone:";
// 城市投票活动
......
......@@ -24,4 +24,6 @@ public interface ISweetIntegralActivityService extends IService<SweetIntegralAct
ResponseDto setDrawAllList(String integralActivityId);
ResponseDto drawBlack(String uidS);
ResponseDto drawWhite(String uidS);
}
......@@ -19,6 +19,10 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Api(tags = "积分物品")
@Controller
@RequestMapping("stone/item")
......@@ -39,7 +43,7 @@ public class StoneItemController extends BaseController {
@GetMapping("integralStoreEdit")
@ApiOperation(value = "积分商品:详情View")
public String integralStoreEdit (ModelMap mmap) {
public String integralStoreEdit(ModelMap mmap) {
mmap.put("platformUrl", platformUrl);
return prefix + "/integralStoreEdit";
}
......@@ -49,12 +53,23 @@ public class StoneItemController extends BaseController {
@PostMapping("list")
@ResponseBody
public TableDataInfo list(StoneListParam listParam) {
PageInfo<StoneScoreItems> result = iItemService.itemList(listParam.getTitle(), listParam.getState(), listParam.getType());
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(0);
rspData.setRows(result.getList());
rspData.setTotal(result.getTotal());
return rspData;
startPage();
List<StoneScoreItems> result = iItemService.itemList(listParam.getTitle(), listParam.getState(), listParam.getType(), listParam.getSimpleType());
List<StoneScoreItems> newList = new ArrayList();
LocalDateTime now = LocalDateTime.now();
for (StoneScoreItems item : result) {
if (item.getStatus() == 2) {
if (now.isAfter(item.getStartTime())) {//未上架
item.setStatus(2);
} else if (now.isBefore(item.getEndTime())) {//已下架
item.setStatus(7);
} else {
item.setStatus(1);//上架中
}
}
newList.add(item);
}
return getDataTable(result);
}
@Log(title = "积分商品:修改状态")
......
......@@ -58,6 +58,19 @@
var prefix = ctx + "stone/item";
var prefix2 = ctx;
var couType = [[${couType}]];
var simpleTypeDataList = [{
id: 1,
simpleName: '5元'
}, {
id: 2,
simpleName: '10元'
}, {
id: 3,
simpleName: '25元'
}, {
id: 4,
simpleName: '35元'
}]
$(function () {
var options = {
url: prefix2 + "stone/item/list",
......@@ -74,7 +87,7 @@
field: '',
title: '序号',
formatter: function (value, row, index) {
return index + 1
return row.mid;
}
},
{
......@@ -94,6 +107,21 @@
}
}
},
{
field: 'simpleType',
title: '优惠券分类',
formatter: function(value, row, index) {
if (value == 0) {
return '无条件';
} else {
for (var i in simpleTypeDataList) {
if (simpleTypeDataList[i].id == value) {
return simpleTypeDataList[i].simpleName;
}
}
}
}
},
{
field: 'busiType',
title: '类型',
......@@ -111,11 +139,11 @@
},
{
field: 'generalSurplus',
title: '已兑换数量'
title: '剩余库存'
},
{
field: 'generalTotal',
title: '剩余库存'
title: '库存'
},
{
field: 'createdAt',
......
......@@ -155,6 +155,16 @@
<input type="radio" value="3" name="typeOne"><span>优先购</span>
</div>
</div>
<div class="labelSelect main_type">
<span class="labelName">优惠券分类:</span>
<select name="labelSelect" id="labelSelectType">
<option value="0">请选择优惠券分类</option>
<option value="1">5元</option>
<option value="2">10元</option>
<option value="3">25元</option>
<option value="4">35元</option>
</select>
</div>
<div id="scoreType" class="main_type">
<span class="labelName"><i class="required">*</i>类别:</span>
<div class="layui-input-block" style="display: flex">
......@@ -172,7 +182,6 @@
</div>
<div class="main_type">
<span class="labelName"><i class="required">*</i>展示图:</span>
<div class="layui-input-block" style="display: flex;flex-direction: column;">
<img id="viewImg" src="" alt="" style="max-height:242px;">
<div class="ibox-content">
......@@ -280,7 +289,8 @@
let itemId = ''; //
let selectType = '1'
let type = '';
console.log('检测')
let simpleType = '';
$(document).ready(function() {
var $summernote = $('#summernote').summernote({
height: 300,
......@@ -348,7 +358,7 @@
$("#searchIpt").val(data.targetTitle);
$("#integralNum").val(data.score);
$("#inventory").val(data.generalTotal);
showId = data.generalTotal;
showId = data.targetId;
// $("#goodsDetail").val(data.details);
$('#summernote').summernote('code', data.details)
$('.summernote').eq(1).summernote('code', data.notice)
......@@ -367,6 +377,15 @@
$("#startTime").val(data.startTime);
$("input[name='sex'][value='2']").attr("checked", "checked").siblings().removeAttr('checked');
}
if (data.simpleType == 0) {
$("#labelSelectType").find("option[value='0']").attr("selected",true);
} else {
var simpleTypeData = data.simpleType.toString();
$("#labelSelectType").find("option[value=" + simpleTypeData + "]").attr("selected",true);
}
if (!showId) {
$('.labelSelect').hide();
}
}
})
}
......@@ -413,7 +432,7 @@
if (res.rows.length>0) {
searchData = res.rows;
searchData.forEach((item,index)=>{
str+= `<li class="selectData" onclick="selectOne('${item.couponId}', 'couponId')">${item.title}</li>`
str+= `<li class="selectData" onclick="selectOne('${item.couponId}', 'couponId')">${item.busiName}</li>`
})
$('#dataList').html(str);
} else {
......@@ -424,7 +443,7 @@
function selectOne(id, name) {
searchData.some( item => {
if (item[name] == id) {
return $("#searchIpt").val(item.title);
return $("#searchIpt").val(item.busiName);
}
} )
// $("#searchIpt").val(name);
......@@ -527,6 +546,7 @@
endTime = $("#endTime").val();
}
}
let data = {
details: $('#summernote').summernote('code'), // 商品详情
endTime: $.common.dateFormat(endTime, 'yyyy-MM-dd HH:mm:ss'), // 下架时间(status = 2 必传)
......@@ -539,8 +559,10 @@
startTime: $.common.dateFormat(startTime, 'yyyy-MM-dd HH:mm:ss'), // 上架时间status = 2 必传)
status: Number(shelves), // 上架状态[1-不限|2-定时|7-下线]
targetId: showId, // 目标物品id
targetTitle: $('#searchIpt').val() || $("#searchIptMall").val() // 目标物品标题
targetTitle: $('#searchIpt').val() || $("#searchIptMall").val(), // 目标物品标题
simpleType: $('#labelSelectType option:selected').val()
}
console.log(showId)
let type = 'post';
if (!itemId) {
delete data.itemId
......@@ -557,7 +579,8 @@
} else {
data['type'] = 11
}
promiseMethods(ctx+'stone/item',type,data).then(res=>{
promiseMethods(ctx+'stone/item', type, data).then(res => {
console.log(res);
layer.msg('' + res);
if (res.code != undefined && res.code != web_status.SUCCESS) {
$.modal.alertWarning(res.msg);
......
......@@ -142,7 +142,7 @@
</div>
<hr>
<div class="scoreTable">
<div class="couponTable">
<div class="row">
<div class="col-sm-12">
<div class="col-sm-12 select-table table-striped">
......@@ -960,10 +960,10 @@
.selectScore span {
color: #ccc;
}
.scoreTable {
.couponTable {
margin-bottom: 12px;
overflow-y: scroll;
max-height: 600px;
max-height: 270px;
}
.details-form-list {
position: fixed;
......@@ -978,7 +978,7 @@
}
.details-pop-inner {
width: 800px;
height: 820px;
height: 490px;
padding: 10px;
background: #fff;
}
......
......@@ -17,7 +17,7 @@ public interface IItemService {
* @param type 类型[1-券]
* @return
*/
PageInfo<StoneScoreItems> itemList(String title, Integer status, Integer type);
List<StoneScoreItems> itemList(String title, Integer status, Integer type, Integer simpleType);
/**
* 修改 积分物品 状态
......
......@@ -42,10 +42,8 @@ public class ItemServiceImpl implements IItemService {
* @param type 类型[1-券]
* @return
*/
public PageInfo<StoneScoreItems> itemList(String title, Integer status, Integer type) {
PageInfo<StoneScoreItems> pageInfo;
public List<StoneScoreItems> itemList(String title, Integer status, Integer type, Integer simpleType) {
LocalDateTime now = LocalDateTime.now();
List<StoneScoreItems> newList = new ArrayList();
LambdaQueryWrapper<StoneScoreItems> queryWrapper = Wrappers.lambdaQuery(StoneScoreItems.class).ne(StoneScoreItems::getStatus, -1);
if (!(title == null || title.equals(""))) {
queryWrapper.like(StoneScoreItems::getTargetTitle, title);
......@@ -65,22 +63,12 @@ public class ItemServiceImpl implements IItemService {
if (type != -1) {
queryWrapper.eq(StoneScoreItems::getType, type);
}
}
List<StoneScoreItems> voList = stoneScoreItemsMapper.selectList(queryWrapper);
for (StoneScoreItems item : voList) {
if (item.getStatus() == 2) {
if (now.isAfter(item.getStartTime())) {//未上架
item.setStatus(2);
} else if (now.isBefore(item.getEndTime())) {//已下架
item.setStatus(7);
} else {
item.setStatus(1);//上架中
}
if (simpleType != 0) {
queryWrapper.eq(StoneScoreItems::getSimpleType, simpleType);
}
newList.add(item);
}
pageInfo = new PageInfo(newList);
return pageInfo;
List<StoneScoreItems> voList = stoneScoreItemsMapper.selectList(queryWrapper);
return voList;
}
@Override
......@@ -111,6 +99,7 @@ public class ItemServiceImpl implements IItemService {
if (result <= 0) {
return "修改失败";
}
redisUtils.delList(redisData.getSimpleType().toString());
return "修改成功";
}
......@@ -155,6 +144,7 @@ public class ItemServiceImpl implements IItemService {
if (count <= 0) {
return "创建失败";
}
redisUtils.delList(param.getSimpleType().toString());
return "创建成功";
}
......@@ -188,6 +178,7 @@ public class ItemServiceImpl implements IItemService {
if (count <= 0) {
return "修改失败";
}
redisUtils.delList(param.getSimpleType().toString());
return "修改成功";
}
......@@ -202,6 +193,7 @@ public class ItemServiceImpl implements IItemService {
data.setTargetId(param.getTargetId());
data.setTargetTitle(param.getTargetTitle());
data.setType(param.getType());
data.setSimpleType(param.getSimpleType());
data.setImg(param.getImg());
data.setScore(param.getScore());
data.setPrice(BigDecimal.ZERO);
......
......@@ -102,4 +102,16 @@ public class StoneRedisUtils {
}
}
/**
* 删除 积分商品列表缓存
*
* @param simpleType
*/
public void delList(String simpleType) {
String redisKey = StoneConstant.ITEM_LIST;
String redisSimpleKey = StoneConstant.ITEM_LIST_SIMPLE.concat(simpleType);
redisDataSourceUtil.getRedisStoneUtil().del(redisKey);
redisDataSourceUtil.getRedisStoneUtil().del(redisSimpleKey);
}
}
......@@ -35,7 +35,7 @@ liquidnet:
dbs: 0,16
database: 15
host: 39.107.71.112
port: 6369
port: 6379
password: 3Xa%8p
dragon:
dbs: 0,16
......@@ -45,8 +45,8 @@ liquidnet:
password: 3Xa%8p
sweet:
dbs: 0,16
database: 15
host: 39.107.71.112
database: 255
host: 15
port: 6379
password: 3Xa%8p
adam:
......
......@@ -65,8 +65,8 @@ spring:
name: ${liquidnet.info.name}
servlet:
multipart:
max-file-size: 50MB
max-request-size: 100MB
max-file-size: 200MB
max-request-size: 200MB
profiles:
include: common-service #这里加载management相关公共配置
rabbitmq:
......
......@@ -125,6 +125,7 @@ global-auth:
- ${liquidnet.info.context}/user/inner/**
- ${liquidnet.info.context}/user/logs/in2111
- ${liquidnet.info.context}/user/logs/de2111
- ${liquidnet.info.context}/user/logs/in2112
oncheck-url-pattern:
# - ${liquidnet.info.context}/**
# -----------------------------------------------------------
......
......@@ -127,7 +127,7 @@
<if test="userName != null and userName != ''">and kot.user_name like concat('%', #{userName}, '%')</if>
<if test="userMobile != null and userMobile != ''">and kot.user_mobile = #{userMobile}</if>
<if test="performanceTitle != null and performanceTitle != ''">
and kot.performance_title like concat('%', #{performanceTitle}, '%')
and kp.title like concat('%', #{performanceTitle}, '%')
</if>
<if test="orderCode != null and orderCode != ''">and kot.order_code = #{orderCode}</if>
<if test="orderType != null and orderType != ''">and kot.order_type = #{orderType}</if>
......@@ -193,7 +193,7 @@
<if test="userName != null and userName != ''">and kot.user_name like concat('%', #{userName}, '%')</if>
<if test="userMobile != null and userMobile != ''">and kot.user_mobile = #{userMobile}</if>
<if test="performanceTitle != null and performanceTitle != ''">
and kot.performance_title like concat('%', #{performanceTitle}, '%')
and kp.title like concat('%', #{performanceTitle}, '%')
</if>
<if test="orderCode != null and orderCode != ''">and kot.order_code = #{orderCode}</if>
<if test="orderType != null and orderType != ''">and kot.order_type = #{orderType}</if>
......
......@@ -90,6 +90,11 @@ public class StoneScoreItems implements Serializable {
*/
private Integer status;
/**
* 类别(区别于TYPE字段)
*/
private Integer simpleType;
/**
* 定时上架-时间
*/
......
package com.liquidnet.service.stone.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 积分日志表
* </p>
*
* @author liquidnet
* @since 2021-10-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class TempScore implements Serializable ,Cloneable{
private static final long serialVersionUID = 1L;
private String uid;
/**
* id
*/
private String mobile;
/**
* 用户id
*/
private BigDecimal priceCost;
private static final TempScore obj = new TempScore();
public static TempScore getNew() {
try {
return (TempScore) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new TempScore();
}
}
package com.liquidnet.service.stone.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.entity.TempScore;
/**
* <p>
* 积分物品表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-10-19
*/
public interface TempScoreMapper extends BaseMapper<TempScore> {
}
......@@ -33,7 +33,7 @@ public interface FeignStoneIntegralClient {
@GetMapping(value = "user/info", headers = {"Inner-Required=1"})
ResponseDto<StoneScoreListDto> stoneUserInfo();
// 增加积分
// 增加积分 积分有上线
@PostMapping(value = "user/logs/in2111")
ResponseDto<String> in2111(
@RequestParam(value = "uid") String uid,
......@@ -41,7 +41,7 @@ public interface FeignStoneIntegralClient {
@RequestParam(value = "content") String content
);
// 增加积分
// 增加积分 积分无上线
@PostMapping(value = "user/logs/in2112")
ResponseDto<String> in2112(
@RequestParam(value = "uid") String uid,
......
......@@ -118,6 +118,9 @@ public class AdamMemberController {
joinusVo = adamRdmService.getMemberJoinusVo(null != userMemberVo && userMemberVo.isActive() ? 50 : 10);
joinusVo.setState(1);
joinusVo.setQrCode(userInfoVo.getQrCode());
if (null != userMemberVo) {
joinusVo.setMemberNo(userMemberVo.getMemberNo());
}
}
return ResponseDto.success(joinusVo);
......@@ -127,10 +130,13 @@ public class AdamMemberController {
@ApiOperation(value = "领取会员卡")
@GetMapping("joinus")
public ResponseDto<AdamMemberJoinusVo> joinus() {
// AdamMemberJoinusVo joinusVo = adamRdmService.getMemberJoinusVo(10);
String currentUid = CurrentUtil.getCurrentUid();
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(currentUid);
AdamUserInfoVo userInfoVo;
if (StringUtils.isEmpty(currentUid) || null == (userInfoVo = adamRdmService.getUserInfoVoByUid(currentUid))) {
log.warn("###用户不存在[UID:{},TOKEN:{}]", currentUid, CurrentUtil.getToken());
return this.joininfo();
}
final String oldQrCode = userInfoVo.getQrCode();
if (StringUtils.startsWithIgnoreCase(oldQrCode, "lN")) {// `lN`开头即未领取,这里做领取操作
userInfoVo.setQrCode(adamRdmService.generateMemberUniqueSerialNumber(userInfoVo.getMobile()));
......@@ -145,6 +151,9 @@ public class AdamMemberController {
AdamMemberJoinusVo joinusVo = adamRdmService.getMemberJoinusVo(null != userMemberVo && userMemberVo.isActive() ? 50 : 10);
joinusVo.setState(1);
joinusVo.setQrCode(userInfoVo.getQrCode());
if (null != userMemberVo) {
joinusVo.setMemberNo(userMemberVo.getMemberNo());
}
try {
feignAdamPlatformClient.initScore(currentUid);
......
......@@ -389,6 +389,12 @@ public class AdamUserController {
String currentUid = CurrentUtil.getCurrentUid();
AdamUserProfileVo userProfileVo = AdamUserProfileVo.getNew();
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(currentUid);
if (null == userInfoVo) {
log.warn("###用户不存在[UID:{},TOKEN:{}]", currentUid, CurrentUtil.getToken());
return ResponseDto.success(userProfileVo);
}
userProfileVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(currentUid));
userProfileVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(currentUid));
......@@ -398,7 +404,6 @@ public class AdamUserController {
AdamUserMemberVo userMemberVo = adamRdmService.getUserMemberVoByUid(currentUid);
userProfileVo.setUserMemberVo(userMemberVo);
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(currentUid);
userProfileVo.setUserInfo(adamRdmService.ratingProvince(userInfoVo).desensitize(reviewUserInfo).rating(userMemberVo));
AdamMemberJoinusVo memberJoinusVo;
......@@ -408,6 +413,9 @@ public class AdamUserController {
memberJoinusVo = adamRdmService.getMemberJoinusVo(null != userMemberVo && userMemberVo.isActive() ? 50 : 10);
memberJoinusVo.setState(1);
memberJoinusVo.setQrCode(userInfoVo.getQrCode());
if (null != userMemberVo) {
memberJoinusVo.setMemberNo(userMemberVo.getMemberNo());
}
}
userProfileVo.setMemberJoinusVo(memberJoinusVo);
......@@ -428,10 +436,11 @@ public class AdamUserController {
} else {
uid = CurrentUtil.getCurrentUid();
}
if (uid == null) {
AdamUserInfoVo userInfoVo;
if (uid == null || null == (userInfoVo = adamRdmService.getUserInfoVoByUid(uid))) {
log.warn("###用户不存在[MOBILE:{},UID:{},TOKEN:{}]", mobile, uid, CurrentUtil.getToken());
return ResponseDto.failure("账号不存在,请确认");
}
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
AdamUserInfoSimpleVo vo = AdamUserInfoSimpleVo.getNew();
if (userInfoVo.getState().equals(1)) {
vo.setMobile(userInfoVo.getMobile());
......
......@@ -107,7 +107,9 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
}
String beforeNickname = existUserInfoVo.getNickname(), nickname = parameter.getNickname();
if (StringUtils.isEmpty(beforeNickname) || (StringUtils.isNotBlank(nickname) && !beforeNickname.equals(nickname))) {
if (isComplete == 11 && (
StringUtils.isEmpty(beforeNickname) || (StringUtils.isNotBlank(nickname) && !beforeNickname.equals(nickname))
)) {
// IM设置推送昵称
easemobUtil.settingNoticeNickname(nickname, existUserInfoVo.getUid());
}
......
......@@ -66,7 +66,7 @@ public class ConsumerSweetStoneIntegralReceiver extends AbstractSqlRedisReceiver
return true;
}
if (param.getType() == 1) {
res = feignStoneIntegralClient.in2111(
res = feignStoneIntegralClient.in2112(
param.getUid(),
param.getScore(),
param.getContent()
......
......@@ -16,8 +16,11 @@ import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.stone.constant.StoneConstant;
import com.liquidnet.service.stone.entity.StoneScoreLogs;
import com.liquidnet.service.stone.entity.StoneScoreUser;
import com.liquidnet.service.stone.entity.TempScore;
import com.liquidnet.service.stone.mapper.StoneScoreItemsMapper;
import com.liquidnet.service.stone.mapper.StoneScoreLogsMapper;
import com.liquidnet.service.stone.mapper.StoneScoreUserMapper;
import com.liquidnet.service.stone.mapper.TempScoreMapper;
import com.liquidnet.service.stone.vo.StoneUserVo;
import com.liquidnet.service.sweet.constant.SweetConstant;
import com.liquidnet.service.sweet.vo.SweetAppletUsersVo;
......@@ -54,44 +57,33 @@ public class StoneServerImpl {
StoneScoreLogsMapper stoneScoreLogsMapper;
@Autowired
FeignStoneIntegralClient stoneIntegralClient;
private static final String SQL_URL = "jdbc:mysql://zhengzai.mysql.polardb.rds.aliyuncs.com:3306/ln_scene";
private static final String SQL_USER = "zhengzai";
private static final String SQL_PWD = "GDDHBJOEcJw!";
@Autowired
TempScoreMapper tempScoreMapper;
public boolean initScore(String uid) {
try {
String sql = "select * from temp_score where uid = " + uid;
Connection connection = DriverManager.getConnection(SQL_URL, SQL_USER, SQL_PWD);
//查询数据
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSetImpl row = (ResultSetImpl) preparedStatement.executeQuery();
//数据迁移
while (row.next()) {
int score = row.getInt("price_cost");
int isLog = stoneScoreLogsMapper.selectCount(Wrappers.lambdaQuery(StoneScoreLogs.class).eq(StoneScoreLogs::getUid, uid).eq(StoneScoreLogs::getContent, "历史积分"));
if (isLog > 0) {
return true;
}
//创建 用户积分数据
int isExists = stoneScoreUserMapper.selectCount(Wrappers.lambdaQuery(StoneScoreUser.class).eq(StoneScoreUser::getUid, uid));
if (isExists <= 0) {
StoneScoreUser data = StoneScoreUser.getNew();
data.setStatus(1);
data.setScoreId(IDGenerator.nextTimeId2());
data.setUid(uid);
data.setCreatedAt(LocalDateTime.now());
stoneScoreUserMapper.insert(data);
StoneUserVo userTaskVo = StoneUserVo.getNew();
userTaskVo.getTask();
userTaskVo.setUid(uid);
userTaskVo.setStatus(1);
userCreate(userTaskVo);
}
stoneIntegralClient.in2111(uid, score, "历史积分");
TempScore dataBean = tempScoreMapper.selectOne(Wrappers.lambdaQuery(TempScore.class).eq(TempScore::getUid, uid));
int score = dataBean.getPriceCost().intValue();
int isLog = stoneScoreLogsMapper.selectCount(Wrappers.lambdaQuery(StoneScoreLogs.class).eq(StoneScoreLogs::getUid, uid).eq(StoneScoreLogs::getContent, "历史积分"));
if (isLog > 0) {
return true;
}
//创建 用户积分数据
int isExists = stoneScoreUserMapper.selectCount(Wrappers.lambdaQuery(StoneScoreUser.class).eq(StoneScoreUser::getUid, uid));
if (isExists <= 0) {
StoneScoreUser data = StoneScoreUser.getNew();
data.setStatus(1);
data.setScoreId(IDGenerator.nextTimeId2());
data.setUid(uid);
data.setCreatedAt(LocalDateTime.now());
stoneScoreUserMapper.insert(data);
StoneUserVo userTaskVo = StoneUserVo.getNew();
userTaskVo.getTask();
userTaskVo.setUid(uid);
userTaskVo.setStatus(1);
userCreate(userTaskVo);
}
row.close();
preparedStatement.close();
stoneIntegralClient.in2111(uid, score, "历史积分");
} catch (Exception e) {
log.info("异常 : {} ", e);
e.printStackTrace();
......
......@@ -31,6 +31,13 @@ public class StoneItemController {
return ResponseDto.success(stoneScoreItemsService.itemList(page, 40));
}
@GetMapping("list/simpleType")
@ApiOperation("积分商品列表(simpleType)")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<List<StoneItemListVo>>> itemListSimpleType(@RequestParam("page") @Valid Integer page, @RequestParam("simpleType") @Valid Integer simpleType) {
return ResponseDto.success(stoneScoreItemsService.itemListSimpleType(simpleType, page, 1000));
}
@GetMapping("details")
@ApiOperation("积分商品详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
......
......@@ -46,15 +46,57 @@ public class StoneScoreItemsServiceImpl implements IStoneScoreItemsService {
page = 1;
}
List<StoneScoreItems> voList;
HashMap<String, Object> info = mongoUtils.itemListPage(page, size);
try {
voList = (List<StoneScoreItems>) info.get("data");
} catch (Exception e) {
voList = new ArrayList();
e.printStackTrace();
long count;
if (page == 1) {
voList = redisUtils.getList();
count = voList.size();
} else {
HashMap<String, Object> info = mongoUtils.itemListPage(page, size, null);
try {
voList = (List<StoneScoreItems>) info.get("data");
} catch (Exception e) {
voList = new ArrayList();
e.printStackTrace();
}
count = 40 + (long) info.get("total");
}
List<StoneItemListVo> returnVoList = ObjectUtils.getStoneItemListVoArrayList();
for (int i = 0; i < voList.size(); i++) {
StoneScoreItems vo = voList.get(i);
StoneItemListVo returnVo = StoneItemListVo.getNew().copy(vo);
returnVoList.add(returnVo);
}
long count = (long) info.get("total");
mPageInfo = new PageInfo(returnVoList);
mPageInfo.setTotal(count);
log.info(UserPathDto.setData("积分商品列表", "", voList));
return mPageInfo;
}
@Override
public PageInfo<List<StoneItemListVo>> itemListSimpleType(Integer simpleType, Integer page, Integer size) {
PageInfo<List<StoneItemListVo>> mPageInfo;
size = 40;
if (page == null || page == 1 || page == 0) {
page = 1;
}
List<StoneScoreItems> voList;
long count;
if (page == 1) {
voList = redisUtils.getListSimple(simpleType);
count = voList.size();
} else {
HashMap<String, Object> info = mongoUtils.itemListPage(page, size, simpleType);
try {
voList = (List<StoneScoreItems>) info.get("data");
} catch (Exception e) {
voList = new ArrayList();
e.printStackTrace();
}
count = 40 + (long) info.get("total");
}
List<StoneItemListVo> returnVoList = ObjectUtils.getStoneItemListVoArrayList();
for (int i = 0; i < voList.size(); i++) {
......@@ -82,9 +124,9 @@ public class StoneScoreItemsServiceImpl implements IStoneScoreItemsService {
int scoreStatus = 2;
int limitStatus = 2;
//判断库存
if (restCount <= 0) {
if (restCount <= 0 && restCount != -999) {
data.setStatus(8);
} else if (restCount <= 50) {
} else if (restCount <= 50 && restCount != -999) {
data.setStatus(9);
}
//判断积分是否够
......@@ -99,7 +141,7 @@ public class StoneScoreItemsServiceImpl implements IStoneScoreItemsService {
} else {
limitStatus = 1;
}
StoneScoreItemVo vo = StoneScoreItemVo.getNew().copy(data,scoreStatus,limitStatus);
StoneScoreItemVo vo = StoneScoreItemVo.getNew().copy(data, scoreStatus, limitStatus);
return ResponseDto.success(vo);
}
}
......@@ -56,7 +56,9 @@ public class StoneScoreOrderServiceImpl implements IStoneScoreOrderService {
if (data == null) {
return ResponseDto.failure("参数异常");
}
if (stoneRedisUtils.getStoneGeneralSurplus(itemId) <= 0) {
boolean is8 = stoneRedisUtils.getStoneGeneralSurplus(itemId) == -999;
if (stoneRedisUtils.getStoneGeneralSurplus(itemId) <= 0 && !is8) {
return ResponseDto.failure("该商品库存不足");
}
// StoneScoreItemVo vo = StoneScoreItemVo.getNew().copy(data, 1, 1);
......@@ -80,7 +82,9 @@ public class StoneScoreOrderServiceImpl implements IStoneScoreOrderService {
//增加限购
stoneRedisUtils.addItemLimit(uid, itemId, number);
//减少库存
stoneRedisUtils.changeStoneGeneralSurplus(itemId, -number);
if (!is8) {
stoneRedisUtils.changeStoneGeneralSurplus(itemId, -number);
}
//减少积分
stoneScoreLogsService.deScore(uid, needScore, 0, "购买积分商品:" + data.getTargetTitle());
//下单
......@@ -123,23 +127,23 @@ public class StoneScoreOrderServiceImpl implements IStoneScoreOrderService {
order.getPaymentId(), order.getTimePay(), order.getPayCountdownMinute(), order.getStatus(), 1, order.getCreatedAt(),
mCouponId
});
if (data.getType().equals("1")) {//券类型
//mysql 发送券
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("stone_candy_mgt_coupon.add_for_member"));
sqlsDataB.add(new Object[]{
mCouponId, data.getTargetId(), number, order.getUserMobile(), order.getCreatedAt(), "SCORE_BUY_COUPON", order.getCreatedAt()
});
// 执行sql
String sqlData = SqlMapping.gets(sqls, sqlsDataA, sqlsDataB);
queueUtils.sendMsgByRedis(MQConst.StoneQueue.STONE_ORDER_COUPON.getKey(),
sqlData);
} else {//非券类型
// 执行sql
String sqlData = SqlMapping.gets(sqls, sqlsDataA);
queueUtils.sendMsgByRedis(MQConst.StoneQueue.STONE_ORDER_COUPON.getKey(),
sqlData);
}
// if (data.getType().equals("1")) {//券类型
//mysql 发送券
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("stone_candy_mgt_coupon.add_for_member"));
sqlsDataB.add(new Object[]{
mCouponId, data.getTargetId(), number, order.getUserMobile(), order.getCreatedAt(), "SCORE_BUY_COUPON", order.getCreatedAt()
});
// 执行sql
String sqlData = SqlMapping.gets(sqls, sqlsDataA, sqlsDataB);
queueUtils.sendMsgByRedis(MQConst.StoneQueue.STONE_ORDER_COUPON.getKey(),
sqlData);
// } else {//非券类型
// // 执行sql
// String sqlData = SqlMapping.gets(sqls, sqlsDataA);
// queueUtils.sendMsgByRedis(MQConst.StoneQueue.STONE_ORDER_COUPON.getKey(),
// sqlData);
// }
return ResponseDto.success("下单成功");
}
......
......@@ -46,13 +46,17 @@ public class StoneMongoUtils {
*
* @return
*/
public HashMap<String, Object> itemListPage(int page, int size) {
LocalDateTime now = LocalDateTime.now();
public HashMap<String, Object> itemListPage(int page, int size, Integer simpleType) {
LocalDateTime now = LocalDateTime.now();
HashMap<String, Object> info = CollectionUtil.mapStringObject();
// 排序 分页
Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.DESC, "createdAt"));
//条件
Query query = Query.query(new Criteria().orOperator(Criteria.where("status").is(1),Criteria.where("status").is(2).and("startTime").lte(now).and("endTime").gte(now)));
Criteria criteria = new Criteria().orOperator(Criteria.where("status").is(1), Criteria.where("status").is(2).and("startTime").lte(now).and("endTime").gte(now));
if (simpleType != null) {
criteria = criteria.and("simpleType").is(simpleType);
}
Query query = Query.query(criteria);
// 查询总数
long count = mongoTemplate.count(query, StoneScoreItems.class, StoneScoreItems.class.getSimpleName());
query.with(pageable);
......@@ -80,7 +84,7 @@ public class StoneMongoUtils {
*/
public StoneUserVo userGet(String uid) {
Query query = Query.query(Criteria.where("uid").is(uid));
StoneUserVo vo = mongoTemplate.findOne(query, StoneUserVo.class,StoneUserVo.class.getSimpleName());
StoneUserVo vo = mongoTemplate.findOne(query, StoneUserVo.class, StoneUserVo.class.getSimpleName());
return vo;
}
......@@ -109,13 +113,14 @@ public class StoneMongoUtils {
/**
* 获取 用户积分日志 列表
*
* @param uid
* @param page
* @param size
* @return
*/
public HashMap<String, Object> logList(String uid,int page, int size) {
LocalDateTime now = LocalDateTime.now();
public HashMap<String, Object> logList(String uid, int page, int size) {
LocalDateTime now = LocalDateTime.now();
HashMap<String, Object> info = CollectionUtil.mapStringObject();
// 排序 分页
Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.DESC, "createdAt"));
......@@ -143,13 +148,14 @@ public class StoneMongoUtils {
/**
* 获取 用户订单 列表
*
* @param uid
* @param page
* @param size
* @return
*/
public HashMap<String, Object> orderList(String uid,int page, int size) {
LocalDateTime now = LocalDateTime.now();
public HashMap<String, Object> orderList(String uid, int page, int size) {
LocalDateTime now = LocalDateTime.now();
HashMap<String, Object> info = CollectionUtil.mapStringObject();
// 排序 分页
Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.DESC, "createdAt"));
......
......@@ -9,6 +9,7 @@ import com.liquidnet.service.stone.vo.StoneUserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
......@@ -19,6 +20,39 @@ public class StoneRedisUtils {
@Autowired
private StoneMongoUtils mongoUtils;
public List<StoneScoreItems> getList() {
try {
String redisKey = StoneConstant.ITEM_LIST;
Object obj = redisUtil.get(redisKey);
if (obj == null) {
List<StoneScoreItems> list = (List<StoneScoreItems>) mongoUtils.itemListPage(1, 40, null).get("data");
redisUtil.set(redisKey, list);
return list;
} else {
return (List<StoneScoreItems>) obj;
}
}catch (Exception e){
return new ArrayList();
}
}
public List<StoneScoreItems> getListSimple(Integer simpleType) {
try {
String redisKey = StoneConstant.ITEM_LIST_SIMPLE.concat(simpleType.toString());
Object obj = redisUtil.get(redisKey);
if (obj == null) {
List<StoneScoreItems> list = (List<StoneScoreItems>) mongoUtils.itemListPage(1, 40, simpleType).get("data");
redisUtil.set(redisKey, list);
return list;
} else {
return (List<StoneScoreItems>) obj;
}
}catch (Exception e){
return new ArrayList();
}
}
/**
* 获取 积分物品 剩余库存
*
......@@ -202,7 +236,7 @@ public class StoneRedisUtils {
Object obj = redisUtil.get(redisKey);
if (obj == null) {
List<StoneScoreLogs> getLogsList = (List<StoneScoreLogs>) mongoUtils.logList(uid, 1, 40).get("data");
redisUtil.set(redisKey,getLogsList);
redisUtil.set(redisKey, getLogsList);
return getLogsList;
} else {
return (List<StoneScoreLogs>) obj;
......@@ -314,12 +348,12 @@ public class StoneRedisUtils {
}
public boolean lockUid(String uid){
public boolean lockUid(String uid) {
String redisKey = StoneConstant.LOCK.concat(uid);
return redisUtil.lock(uid,1,1);
return redisUtil.lock(uid, 1, 1);
}
public void unLockUid(String uid){
public void unLockUid(String uid) {
String redisKey = StoneConstant.LOCK.concat(uid);
redisUtil.uLock(redisKey);
}
......
......@@ -49,4 +49,10 @@ public class SweetIntegralActivityController {
public ResponseDto drawBlack(@RequestParam String uidS) {
return activityService.drawBlack(uidS);
}
@PostMapping("drawWhite")
@ApiOperation("抽奖白名单")
public ResponseDto drawWhite(@RequestParam String uidS) {
return activityService.drawWhite(uidS);
}
}
......@@ -100,7 +100,7 @@ public class TextMsgHandler implements WxMpMessageHandler {
redisUtils.setSweetMaoDengOpen(openId, 10 * 60);
WxMpXmlOutTextMessage build = WxMpXmlOutMessage.TEXT().content("没想到吧,你的喵星人主子在玩耍逗喵棒之外,也有一个隐秘的音乐人分身呢!\n" +
"看看TA到底是怎样一只音乐喵!\n" +
"参与活动之前,请先告诉我们猫咪的名字!(直接在对话框输入即可👇,9个汉字或18个英文字符以内)\n")
"参与活动之前,请先告诉我们猫咪的名字!(直接在对话框输入即可👇,8个汉字或8个英文字符以内)\n")
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
return build;
......@@ -115,7 +115,7 @@ public class TextMsgHandler implements WxMpMessageHandler {
}
if (content.length() > 8) {
return WxMpXmlOutMessage.TEXT().content("昵称要9个字以内~")
return WxMpXmlOutMessage.TEXT().content("昵称要8个字以内~")
.fromUser(wxMessage.getToUser()).toUser(openId)
.build();
}
......
......@@ -483,12 +483,17 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
BigDecimal prizeNumBig = BigDecimal.valueOf(prizeNum);
// 概率
BigDecimal estimatedNumBig = BigDecimal.valueOf(estimatedNum);
// 会员概率*2
// 会员、白名单概率*2
try {
ResponseDto<Boolean> isMemberDto = feignAdamBaseClient.isMember(uid);
Boolean isMember = isMemberDto.getData();
if (isMember) {
List<String> drawWhite = redisDataUtils.getIntegralActivityDrawWhite();
if (drawWhite.contains(uid)) {
estimatedNumBig = estimatedNumBig.divide(BigDecimal.valueOf(2), 2, BigDecimal.ROUND_HALF_UP);
} else {
ResponseDto<Boolean> isMemberDto = feignAdamBaseClient.isMember(uid);
Boolean isMember = isMemberDto.getData();
if (isMember) {
estimatedNumBig = estimatedNumBig.divide(BigDecimal.valueOf(2), 2, BigDecimal.ROUND_HALF_UP);
}
}
} catch (Exception e) {
log.error("获取用户是否是会员失败 [uid:{}, e:{}]", uid, e);
......
......@@ -133,4 +133,12 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
// boolean contains = aList.contains("11");
return ResponseDto.success();
}
@Override
public ResponseDto drawWhite(String uidS) {
String[] strings = uidS.split(",");
List<String> aList = Arrays.asList(strings);
redisDataUtils.setIntegralActivityDrawWhite(aList);
return ResponseDto.success();
}
}
......@@ -680,6 +680,19 @@ public class RedisDataUtils {
return (List<String>) obj;
}
}
public void setIntegralActivityDrawWhite(List<String> uidS) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_WHITE;
redisUtil.set(redisKey, uidS);
}
public List<String> getIntegralActivityDrawWhite() {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_WHITE;
Object obj = redisUtil.get(redisKey);
if (null == obj) {
return Arrays.asList();
} else {
return (List<String>) obj;
}
}
public boolean setIntegralDrawLock(String userId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_LOCK
......
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