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

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

积分商品列表

parent 95ed00b4
...@@ -23,6 +23,9 @@ public class AdamUserInfoSimpleVo implements java.io.Serializable, Cloneable { ...@@ -23,6 +23,9 @@ public class AdamUserInfoSimpleVo implements java.io.Serializable, Cloneable {
private String mobile; private String mobile;
@ApiModelProperty(position = 14, value = "昵称[32]") @ApiModelProperty(position = 14, value = "昵称[32]")
private String nickname; private String nickname;
@ApiModelProperty(position = 15, value = "头像")
private String avatar;
private static final AdamUserInfoSimpleVo obj = new AdamUserInfoSimpleVo(); private static final AdamUserInfoSimpleVo obj = new AdamUserInfoSimpleVo();
......
package com.liquidnet.service.stone.service; package com.liquidnet.service.stone.service;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
/** /**
* <p> * <p>
* 积分用户表 服务类 * 积分用户表 服务类
...@@ -11,4 +13,10 @@ package com.liquidnet.service.stone.service; ...@@ -11,4 +13,10 @@ package com.liquidnet.service.stone.service;
*/ */
public interface IStoneScoreUserService { public interface IStoneScoreUserService {
/**
* 获取积分商城 用户信息
* @return
*/
StoneScoreListDto stoneUserInfo();
} }
...@@ -20,7 +20,3 @@ liquidnet: ...@@ -20,7 +20,3 @@ liquidnet:
mongodb: mongodb:
sslEnabled: false sslEnabled: false
database: dev_ln_scene database: dev_ln_scene
adam:
url: ${liquidnet.service.adam.url}
candy:
url: ${liquidnet.service.candy.url}
...@@ -20,7 +20,3 @@ liquidnet: ...@@ -20,7 +20,3 @@ liquidnet:
mongodb: mongodb:
sslEnabled: false sslEnabled: false
database: test_ln_scene database: test_ln_scene
adam:
url: ${liquidnet.service.adam.url}
candy:
url: ${liquidnet.service.candy.url}
\ No newline at end of file
...@@ -6,12 +6,13 @@ import lombok.Data; ...@@ -6,12 +6,13 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
@Data @Data
public class StoneScoreListDto { public class StoneScoreListDto implements Cloneable {
/** /**
* 昵称 * 昵称
*/ */
// @ApiModelProperty(required = false, value = "昵称", example = "宇航员Marinda") // @ApiModelProperty(required = false, value = "昵称", example = "宇航员Marinda")
private String nickName; private String nickName;
private String avatar;
/** /**
* 手机号 * 手机号
*/ */
...@@ -42,4 +43,14 @@ public class StoneScoreListDto { ...@@ -42,4 +43,14 @@ public class StoneScoreListDto {
*/ */
// @ApiModelProperty(required = false, value = "剩余积分", example = "50.00") // @ApiModelProperty(required = false, value = "剩余积分", example = "50.00")
private BigDecimal scoreRest; private BigDecimal scoreRest;
private static final StoneScoreListDto obj = new StoneScoreListDto();
public static StoneScoreListDto getNew() {
try {
return (StoneScoreListDto) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new StoneScoreListDto();
}
} }
...@@ -390,9 +390,14 @@ public class AdamUserController { ...@@ -390,9 +390,14 @@ public class AdamUserController {
}) })
@PostMapping(value = {"gif/mobile"}) @PostMapping(value = {"gif/mobile"})
public ResponseDto<AdamUserInfoSimpleVo> getInfoByMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误") public ResponseDto<AdamUserInfoSimpleVo> getInfoByMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误")
@RequestParam String mobile) { @RequestParam(name = "mobile", required = false) String mobile) {
String uid = adamRdmService.getUidByMobile(mobile); String uid;
if(uid==null){ if (mobile != null) {
uid = adamRdmService.getUidByMobile(mobile);
} else {
uid = CurrentUtil.getCurrentUid();
}
if (uid == null) {
return ResponseDto.failure("账号不存在,请确认"); return ResponseDto.failure("账号不存在,请确认");
} }
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
...@@ -401,6 +406,7 @@ public class AdamUserController { ...@@ -401,6 +406,7 @@ public class AdamUserController {
vo.setMobile(userInfoVo.getMobile()); vo.setMobile(userInfoVo.getMobile());
vo.setUid(userInfoVo.getUid()); vo.setUid(userInfoVo.getUid());
vo.setNickname(userInfoVo.getNickname()); vo.setNickname(userInfoVo.getNickname());
vo.setAvatar(userInfoVo.getAvatar());
return ResponseDto.success(vo); return ResponseDto.success(vo);
} else { } else {
return ResponseDto.failure("账号不存在,请确认"); return ResponseDto.failure("账号不存在,请确认");
......
...@@ -31,6 +31,11 @@ ...@@ -31,6 +31,11 @@
<artifactId>liquidnet-service-stone-api</artifactId> <artifactId>liquidnet-service-stone-api</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-adam-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.liquidnet.service.stone.service.impl; package com.liquidnet.service.stone.service.impl;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoSimpleVo;
import com.liquidnet.service.stone.dto.StoneScoreListDto;
import com.liquidnet.service.stone.service.IStoneScoreUserService; import com.liquidnet.service.stone.service.IStoneScoreUserService;
import com.liquidnet.service.stone.util.InnerUtils;
import com.liquidnet.service.stone.util.StoneRedisUtils;
import com.liquidnet.service.stone.vo.StoneUserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
/** /**
* <p> * <p>
* 积分用户表 服务实现类 * 积分用户表 服务实现类
...@@ -14,4 +23,29 @@ import org.springframework.stereotype.Service; ...@@ -14,4 +23,29 @@ import org.springframework.stereotype.Service;
@Service @Service
public class StoneScoreUserServiceImpl implements IStoneScoreUserService { public class StoneScoreUserServiceImpl implements IStoneScoreUserService {
@Autowired
StoneRedisUtils redisUtils;
@Override
public StoneScoreListDto stoneUserInfo() {
try {
String uid = CurrentUtil.getCurrentUid();
StoneScoreListDto vo = StoneScoreListDto.getNew();
AdamUserInfoSimpleVo userVo = InnerUtils.getUserInfo();
StoneUserVo userTaskVo = redisUtils.getUserData(uid);
int rest = redisUtils.getUserScoreRest(uid);
int use = redisUtils.getUserScoreUse(uid);
vo.setAvatar(userVo.getAvatar());
vo.setMobile(userVo.getMobile());
vo.setNickName(userVo.getNickname());
vo.setScoreAll(BigDecimal.valueOf(use + rest));
vo.setScoreRest(BigDecimal.valueOf(rest));
vo.setScoreUse(BigDecimal.valueOf(use));
vo.setStatus(userTaskVo.getStatus());
return vo;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
} }
package com.liquidnet.service.stone.util;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoSimpleVo;
import com.liquidnet.service.base.ResponseDto;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.MultiValueMap;
/**
* 内部接口调用工具类
*/
public class InnerUtils {
@Value("${liquidnet.service.adam.url}")
private String adamUrl;
@Value("${liquidnet.service.candy.url}")
private String candyUrl;
public static AdamUserInfoSimpleVo getUserInfo() throws Exception {
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Authorization", "Bearer " + CurrentUtil.getToken());
String resultData = HttpUtil.post("/adam/user/gif/mobile", null, header);
ResponseDto<AdamUserInfoSimpleVo> innerReturnVo = JsonUtils.fromJson(resultData, new TypeReference<ResponseDto<AdamUserInfoSimpleVo>>() {
});
return innerReturnVo.getData();
}
}
package com.liquidnet.service.stone.util;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.vo.StoneUserVo;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class StoneMongoUtils {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 创建 积分物品
*
* @param data
* @return
*/
public Object itemCreate(StoneScoreItems data) {
return mongoTemplate.insert(data, StoneScoreItems.class.getSimpleName());
}
/**
* 获取 积分物品
*
* @param itemId
* @return
*/
public StoneScoreItems itemGet(String itemId) {
Query query = Query.query(Criteria.where("itemId").ne(itemId));
return mongoTemplate.findOne(query,
StoneScoreItems.class, StoneScoreItems.class.getSimpleName());
}
/**
* 根据积分物品id修改
*
* @param data
* @return
*/
public Object itemUpdateById(StoneScoreItems data) {
Query query = Query.query(Criteria.where("itemId").is(data.getItemId()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(data)));
UpdateResult result = mongoTemplate.updateFirst(query, update, StoneScoreItems.class, StoneScoreItems.class.getSimpleName());
return result;
}
/**
* 查询 积分物品 列表
*
* @return
*/
public List<StoneScoreItems> itemList() {
Query query = Query.query(Criteria.where("status").ne(-1));
List<StoneScoreItems> voList = mongoTemplate.find(query.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
StoneScoreItems.class, StoneScoreItems.class.getSimpleName());
return voList;
}
/**
* 创建 用户积分
*
* @param data
* @return
*/
public Object userCreate(StoneUserVo data) {
return mongoTemplate.insert(data, StoneUserVo.class.getSimpleName());
}
/**
* 根据用户id修改 用户积分
*
* @param data
* @return
*/
public Object userUpdateByUid(StoneUserVo data) {
Query query = Query.query(Criteria.where("uid").is(data.getUid()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(data)));
UpdateResult result = mongoTemplate.updateFirst(query, update, StoneUserVo.class, StoneUserVo.class.getSimpleName());
return result;
}
}
package com.liquidnet.service.stone.util;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.stone.constant.StoneConstant;
import com.liquidnet.service.stone.entity.StoneScoreItems;
import com.liquidnet.service.stone.vo.StoneUserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class StoneRedisUtils {
@Autowired
private RedisUtil redisUtil;
@Autowired
private StoneMongoUtils mongoUtils;
/**
* 获取 积分物品 剩余库存
*
* @param itemId ID
* @return
*/
public Integer getStoneGeneralSurplus(String itemId) {
String redisKey = StoneConstant.ITEM.concat(itemId).concat(StoneConstant.SURPLUS_GENERAL);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return 0;
} else {
return (Integer) obj;
}
}
/**
* 修改 积分物品 库存
*
* @param itemId ID
* @param general 改变量
* @return
*/
public Integer changeStoneGeneralSurplus(String itemId, Integer general) {
String redisKey = StoneConstant.ITEM.concat(itemId).concat(StoneConstant.SURPLUS_GENERAL);
long result;
if (general > 0) {
result = redisUtil.incr(redisKey, general);
} else {
result = redisUtil.decr(redisKey, Math.abs(general));
}
return (int) result;
}
/**
* 获取 用户积分 可用
*
* @param uid ID
* @return
*/
public Integer getUserScoreRest(String uid) {
String redisKey = StoneConstant.USE_SCORE.concat(uid).concat(StoneConstant.SURPLUS_SCORE);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return 0;
} else {
return (Integer) obj;
}
}
/**
* 获取 用户积分 可用
*
* @param uid ID
* @return
*/
public Integer getUserScoreUse(String uid) {
String redisKey = StoneConstant.USE_SCORE.concat(uid).concat(StoneConstant.USE_SCORE);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return 0;
} else {
return (Integer) obj;
}
}
/**
* 设置 积分物品 缓存
*
* @param itemId
* @param data
*/
public void setItemData(String itemId, StoneScoreItems data) {
String redisKey = StoneConstant.ITEM.concat(itemId);
redisUtil.set(redisKey, data);
}
/**
* 获取 积分物品 缓存
*
* @param itemId
*/
public StoneScoreItems getItemData(String itemId) {
String redisKey = StoneConstant.ITEM.concat(itemId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return mongoUtils.itemGet(itemId);
} else {
return (StoneScoreItems) obj;
}
}
/**
* 修改 积分物品 缓存list
*
* @param data
*/
public void updateItemDataList(StoneScoreItems data) {
String redisKey = StoneConstant.ITEM_LIST;
Object obj = redisUtil.get(redisKey);
List<StoneScoreItems> dataList;
if (obj == null) {
dataList = mongoUtils.itemList();
} else {
dataList = (List<StoneScoreItems>) obj;
}
for (int i = 0; i < dataList.size(); i++) {
StoneScoreItems items = dataList.get(i);
if (items.getItemId().equals(data.getItemId())) {
dataList.set(i, items);
break;
}
}
redisUtil.set(redisKey, dataList);
}
/**
* 添加 积分物品 缓存list
*
* @param data
*/
public void addItemDataList(StoneScoreItems data) {
String redisKey = StoneConstant.ITEM_LIST;
Object obj = redisUtil.get(redisKey);
List<StoneScoreItems> dataList;
if (obj == null) {
dataList = mongoUtils.itemList();
} else {
dataList = (List<StoneScoreItems>) obj;
}
dataList.add(0, data);
if (dataList.size() > 40) {
int size = dataList.size() - 40;
for (int i = 0; i < size; i++) {
dataList.remove(40);
}
}
redisUtil.set(redisKey, dataList);
}
/**
* 设置 积分物品 缓存list
*/
public List<StoneScoreItems> getItemDataList() {
String redisKey = StoneConstant.ITEM_LIST;
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return mongoUtils.itemList();
} else {
return (List<StoneScoreItems>) obj;
}
}
/**
* 设置 用户积分 缓存
*
* @param uid
* @param data
*/
public void setUserData(String uid, StoneUserVo data) {
String redisKey = StoneConstant.USER.concat(uid);
redisUtil.set(redisKey, data);
}
/**
* 获取 用户积分 缓存
*
* @param uid
*/
public StoneUserVo getUserData(String uid) {
String redisKey = StoneConstant.USER.concat(uid);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
return null;
} else {
return (StoneUserVo) obj;
}
}
}
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