Commit be7597bf authored by shiyu's avatar shiyu

Merge remote-tracking branch 'origin/master'

parents 9615e793 ecbd13ed
......@@ -124,6 +124,11 @@
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>2.0.23</version>
</dependency>
</dependencies>
......
package com.wwdz.ch.core.notify;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.xxdxxs.utils.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class AliSmsSender implements SmsSender {
Logger logger = LoggerFactory.getLogger(getClass());
@Value("${dts.notify.alisms.accessKey}")
private String accessKeyId;
@Value("${dts.notify.alisms.secretKey}")
private String accessKeySecret;
@Value("${dts.notify.alisms.url}")
private String url;
@Value("${dts.notify.alisms.templateCode}")
private String templateCode;
//短信API产品名称(短信产品名固定,无需修改)
final String product = "Dysmsapi";
//短信API产品域名(接口地址固定,无需修改)
final String domain = "dysmsapi.aliyuncs.com";
public com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setAccessKeyId(accessKeyId)
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
@Override
public SmsResult send(String phone, String content) {
return null;
}
@Override
public SmsResult sendWithTemplate(String phone, int templateId, String[] params) {
return null;
}
public SmsResult sendWithTemplate(String phone, String verifyCode) {
try {
Map<String, Object> map = new HashMap<>();
map.put("msg", verifyCode + "短信验证码,1分钟内有效,请勿向任何人提供或泄露。");
com.aliyun.dysmsapi20170525.Client client = createClient();
com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
.setPhoneNumbers(phone)
.setTemplateCode(templateCode)
.setTemplateParam(JsonUtils.fromMap(map))
.setSignName("玩物得志");
SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, new com.aliyun.teautil.models.RuntimeOptions());
logger.info("短线验证发送结果 : {} ", JsonUtils.from(sendSmsResponse));
if ("OK".equals(sendSmsResponse.getBody().code)) {
SmsResult smsResult = new SmsResult();
smsResult.setSuccessful(true);
smsResult.setResult(verifyCode);
return smsResult;
}
throw new RuntimeException("验证码发送失败");
} catch (Exception e) {
logger.error("AliSmsSender.sendWithTemplate(),mobile={}",phone,e );
throw new RuntimeException("验证码发送失败");
}
}
}
......@@ -37,6 +37,12 @@ dts:
- name: refund
templateId: 112233
alisms:
accessKey: LTAIehMFG7EhsJY8
secretKey: 1Q3mIc2tYaKT3tw3FCbKGu48AtiWSD
url: http://MQ_INST_1961444063236731_BXc2xu0h.cn-hangzhou.mq-internal.aliyuncs.com:8080
templateCode: SMS_212085019
# 微信模版通知配置
# 微信模版用于通知客户或者运营者,注意配置格式;template-name,template-templateId 请参考 NotifyType 枚举值
wx:
......
......@@ -37,6 +37,12 @@ dts:
- name: refund
templateId: 112233
alisms:
accessKey: LTAIehMFG7EhsJY8
secretKey: 1Q3mIc2tYaKT3tw3FCbKGu48AtiWSD
url: http://MQ_INST_1961444063236731_BXc2xu0h.cn-hangzhou.mq-internal.aliyuncs.com:8080
templateCode: SMS_212085019
# 微信模版通知配置
# 微信模版用于通知客户或者运营者,注意配置格式;template-name,template-templateId 请参考 NotifyType 枚举值
wx:
......
......@@ -7,10 +7,14 @@ public interface CategoryDao {
List<Category> queryByLevel(Integer level, Integer offset, Integer limit);
List<Category> listByLevel(Integer level);
List<Category> queryByPid(Integer pid);
Category findById(Integer id);
Category findByName(String name);
List<Category> querySelective(String id, String name, Integer page, Integer size, String sort, String order);
int updateById(Category category);
......
......@@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo;
import com.wwdz.ch.db.domain.FavoritesItemsRelation;
import java.util.List;
import java.util.Map;
public interface FavoritesItemsRelationDao {
int insert(FavoritesItemsRelation record);
......@@ -17,4 +18,5 @@ public interface FavoritesItemsRelationDao {
long countByItemId(Long itemId);
boolean isCollected(Long userId, Long itemId);
long countByFavoritesId(Long favoritesId);
List<Map<String, Object>> findItemIdByCount();
}
......@@ -8,4 +8,5 @@ public interface UserItemsRelationDao {
int insert(UserItemsRelation record);
List<UserItemsRelation> listByUserIds(Long userId, List<Long> userIds);
boolean isExisted(Long userId, Long itemId);
UserItemsRelation find(Long itemId);
}
......@@ -36,6 +36,12 @@ public class CategoryDaoImpl implements CategoryDao {
return categoryMapper.selectByExample(example);
}
public List<Category> listByLevel(Integer level) {
CategoryExample example = new CategoryExample();
example.or().andLevelEqualTo(level).andIsDeletedEqualTo(false);
return categoryMapper.selectByExample(example);
}
public List<Category> queryByPid(Integer pid) {
CategoryExample example = new CategoryExample();
example.or().andPidEqualTo(pid).andIsDeletedEqualTo(false);
......@@ -46,6 +52,12 @@ public class CategoryDaoImpl implements CategoryDao {
return categoryMapper.selectByPrimaryKey(id);
}
public Category findByName(String name) {
CategoryExample example = new CategoryExample();
example.or().andNameEqualTo(name).andIsDeletedEqualTo(false);
return categoryMapper.selectOneByExample(example);
}
public List<Category> querySelective(String id, String name, Integer page, Integer size, String sort,
String order) {
CategoryExample example = new CategoryExample();
......
......@@ -2,16 +2,16 @@ package com.wwdz.ch.db.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wwdz.ch.db.domain.Favorites;
import com.wwdz.ch.db.mapper.FavoritesItemsRelationMapper;
import com.wwdz.ch.db.dao.FavoritesItemsRelationDao;
import com.wwdz.ch.db.domain.FavoritesItemsRelation;
import com.wwdz.ch.db.domain.FavoritesItemsRelationExample;
import com.wwdz.ch.db.dao.FavoritesItemsRelationDao;
import com.wwdz.ch.db.mapper.FavoritesItemsRelationMapper;
import com.xxdxxs.db.component.JdbcHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Repository
public class FavoritesItemsRelationDaoImpl implements FavoritesItemsRelationDao {
......@@ -106,4 +106,9 @@ public class FavoritesItemsRelationDaoImpl implements FavoritesItemsRelationDao
JdbcHelper.ifPresent(favoritesId, criteria::andFavoritesIdEqualTo);
return favoritesItemsRelationMapper.countByExample(example);
}
@Override
public List<Map<String, Object>> findItemIdByCount() {
return favoritesItemsRelationMapper.selectItemIdByCount();
}
}
......@@ -328,11 +328,12 @@ public class ItemDaoImpl implements ItemDao {
ItemExample example = new ItemExample();
ItemExample.Criteria criteria = example.createCriteria();
criteria.andIsDeletedEqualTo(false);
// 暂时去除华夏古泉和天眷堂的钱币, 对应编码2和7
//暂时去除华夏古泉和天眷堂的钱币, 对应编码2和7
if (!ObjectUtils.isEmpty(coinRequestDto.getIsExcluded()) && coinRequestDto.getIsExcluded() == 1) {
criteria.andSourceNotEqualTo(2);
criteria.andSourceNotEqualTo(7);
}
criteria.andSourceIn(CHINESE_SOURCE_LIST);
if (StringUtils.hasLength(coinRequestDto.getName())) {
criteria.andNameLike("%" + coinRequestDto.getName() + "%");
}
......
......@@ -37,4 +37,12 @@ public class UserItemsRelationDaoImpl implements UserItemsRelationDao {
criteria.andItemIdEqualTo(itemId);
return usersItemsRelationMapper.countByExample(example) > 0;
}
@Override
public UserItemsRelation find (Long itemId) {
UserItemsRelationExample example = new UserItemsRelationExample();
UserItemsRelationExample.Criteria criteria = example.createCriteria();
criteria.andItemIdEqualTo(itemId);
return usersItemsRelationMapper.selectOneByExample(example);
}
}
......@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@Mapper
public interface FavoritesItemsRelationMapper {
......@@ -50,4 +51,6 @@ public interface FavoritesItemsRelationMapper {
int updateByExampleSelective(@Param("record") FavoritesItemsRelation record, @Param("example") FavoritesItemsRelationExample example);
int updateByExample(@Param("record") FavoritesItemsRelation record, @Param("example") FavoritesItemsRelationExample example);
List<Map<String, Object>> selectItemIdByCount();
}
\ No newline at end of file
......@@ -244,4 +244,7 @@
</if>
limit 1
</select>
<select id="selectItemIdByCount" resultType="java.util.Map">
select item_id,count(*) from favorites_items_relation group by item_id order by count(*) limit 20
</select>
</mapper>
\ No newline at end of file
......@@ -30,6 +30,6 @@ public class WxWebMvcConfiguration implements WebMvcConfigurer {
registry.addInterceptor(loginInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/wx/user/loginByWx"
, "/wx/user/loginByMobile", "/wx/user/loginRegCaptcha", "/wx/user/updateRegCaptcha", "/wx/item/page", "/wx/item/info");
, "/wx/user/loginByMobile", "/wx/user/loginRegCaptcha", "/wx/user/updateRegCaptcha", "/wx/item/page", "/wx/item/info", "/wx/favorites/info", "/wx/favorites/itemList");
}
}
......@@ -9,4 +9,5 @@ public class CategoryRequestDto implements Entity {
private Integer level;
private Integer page;
private Integer size;
private String name;
}
package com.wwdz.ch.wx.entity.vo;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.List;
@Data
public class CategoryResponseVo implements Entity {
private Integer cid;
private Integer pid;
private String categoryName;
private List<CategoryResponseVo> child;
private Integer isChosen;
}
......@@ -23,4 +23,6 @@ public class ItemResponseVo implements Entity {
private String createTime;
private String videos;
private Map<String, Object> homePageImage;
private Integer isDeleted;
private String itemNickname;
}
package com.wwdz.ch.wx.impl;
import com.google.common.collect.Lists;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dao.CategoryDao;
import com.wwdz.ch.db.domain.Category;
import com.wwdz.ch.wx.entity.request.CategoryRequestDto;
import com.wwdz.ch.wx.entity.vo.CategoryResponseVo;
import com.wwdz.ch.wx.service.CategoryService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class CategoryServiceImpl implements CategoryService {
private static final Logger logger = LoggerFactory.getLogger(CategoryServiceImpl.class);
......@@ -36,4 +44,70 @@ public class CategoryServiceImpl implements CategoryService {
return Result.failed("查询子类目失败");
}
}
@Override
public Result find(CategoryRequestDto dto) {
if (StringUtils.isBlank(dto.getName())) {
return Result.success(new ArrayList<>());
}
try {
Category category = categoryDao.findByName(dto.getName());
if (Objects.isNull(category)) {
return Result.success(new ArrayList<>());
}
List<Category> categoryList = new ArrayList<>();
categoryList.add(category);
int i = category.getLevel() - 1;
while (i > 0) {
categoryList.addAll(categoryDao.listByLevel(i));
i --;
}
List<CategoryResponseVo> responseVoList = categoryList.stream()
.map(this::toCategotyResongseVo).collect(Collectors.toList());
for (CategoryResponseVo vo : responseVoList) {
if (vo.getCid().equals(category.getId())) {
vo.setIsChosen(1);
}
}
return Result.success(convertVoList(responseVoList));
} catch (Exception e) {
return null;
}
}
public List<CategoryResponseVo> convertVoList(List<CategoryResponseVo> voList) {
Map<Integer, CategoryResponseVo> menuMap = new HashMap<>();
CategoryResponseVo root = new CategoryResponseVo();
root.setChild(Lists.newArrayList());
root.setCid(0);
menuMap.put(0, root);
if (CollectionUtils.isNotEmpty(voList)) {
for (CategoryResponseVo vo : voList) {
menuMap.put(vo.getCid(), vo);
}
for (CategoryResponseVo vo : voList) {
if (Objects.isNull(vo)) {
continue;
}
CategoryResponseVo parentVo = menuMap.get(vo.getPid());
if (Objects.isNull(parentVo)) {
continue;
}
if (CollectionUtils.isEmpty(parentVo.getChild())) {
parentVo.setChild(Lists.newArrayList());
}
parentVo.getChild().add(vo);
}
}
return root.getChild();
}
private CategoryResponseVo toCategotyResongseVo(Category category) {
CategoryResponseVo vo = new CategoryResponseVo();
vo.setCid(category.getId());
vo.setPid(category.getPid());
vo.setCategoryName(category.getName());
vo.setIsChosen(0);
return vo;
}
}
......@@ -100,7 +100,7 @@ public class FavoritesServiceImpl implements FavoritesService {
coinRequestDto.setIds(favoritesItemsRelations.stream()
.map(FavoritesItemsRelation::getItemId).collect(Collectors.toList()));
List<Item> items = itemDao.findListWithImages(coinRequestDto);
items = items.stream().filter(s -> StringUtils.isNotBlank(s.getImages())).collect(Collectors.toList());
items = items.stream().filter(s -> !s.getIsDeleted()).filter(s -> StringUtils.isNotBlank(s.getImages())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(items)) {
List<String> images = new ArrayList<>();
if (items.size() <= 4) {
......@@ -153,7 +153,7 @@ public class FavoritesServiceImpl implements FavoritesService {
coinRequestDto.setIds(favoritesItemsRelations.stream()
.map(FavoritesItemsRelation::getItemId).collect(Collectors.toList()));
List<Item> items = itemDao.findListWithImages(coinRequestDto);
items = items.stream().filter(s -> StringUtils.isNotBlank(s.getImages())).collect(Collectors.toList());
items = items.stream().filter(s -> !s.getIsDeleted()).filter(s -> StringUtils.isNotBlank(s.getImages())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(items)) {
List<String> images = new ArrayList<>();
if (items.size() <= 4) {
......@@ -252,6 +252,31 @@ public class FavoritesServiceImpl implements FavoritesService {
vo.setAddTime(favorites.getAddTime());
vo.setUpdateTime(favorites.getUpdateTime());
vo.setCount(favoritesItemsRelationDao.countByFavoritesId(favorites.getId()));
vo.setImages(new ArrayList<>());
// 获取藏品的图片
List<FavoritesItemsRelation> favoritesItemsRelations = favoritesItemsRelationDao.listByFavoritesId(favorites.getId(), null);
if (CollectionUtils.isNotEmpty(favoritesItemsRelations)) {
CoinRequestDto coinRequestDto = new CoinRequestDto();
coinRequestDto.setIds(favoritesItemsRelations.stream()
.map(FavoritesItemsRelation::getItemId).collect(Collectors.toList()));
List<Item> items = itemDao.findListWithImages(coinRequestDto);
items = items.stream().filter(s -> !s.getIsDeleted()).filter(s -> StringUtils.isNotBlank(s.getImages())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(items)) {
List<String> images = new ArrayList<>();
if (items.size() <= 4) {
for (Item item : items) {
String[] image = item.getImages().split(";");
images.add(image[0]);
}
} else {
for (int i = 0; i < 4; i ++) {
String[] image = items.get(i).getImages().split(";");
images.add(image[0]);
}
}
vo.setImages(images);
}
}
logger.info("【请求结束】查看收藏册详情成功");
return Result.success(vo);
} catch (Exception e) {
......@@ -275,60 +300,40 @@ public class FavoritesServiceImpl implements FavoritesService {
}
List<AgentTranceResponseVo> list = new ArrayList<>();
for (FavoritesItemsRelation relation : relationPage.getList()) {
AgentTranceResponseVo agentTranceResponseVo = new AgentTranceResponseVo();
agentTranceResponseVo.setAgentTraceInfo_("");
agentTranceResponseVo.setViewType(2);
ItemResponseVo vo = new ItemResponseVo();
Item item = itemDao.findDetails(relation.getItemId());
Item item = itemDao.findById(relation.getItemId());
if (Objects.isNull(item)) {
vo.setId(relation.getItemId());
vo.setHomePageImage(getImage(item));
vo.setIsDeleted(1);
agentTranceResponseVo.setDetail(vo);
list.add(agentTranceResponseVo);
continue;
}
vo.setIsDeleted(0);
// 设置基本信息
vo.setId(relation.getItemId());
vo.setName(item.getName());
vo.setImages(item.getImages());
vo.setDetail(item.getDetail());
// 设置价格
if (item.getPrice() % 100 == 0) {
vo.setPrice(String.valueOf(item.getPrice() / 100));
} else {
vo.setPrice(String.valueOf(item.getPrice().doubleValue() / 100));
}
vo.setPrice(StringUtil.formatAmount(vo.getPrice()));
vo.setPrice(getPrice(item.getPrice()));
// 设置是否收藏或是否是自己发布的
vo.setIsCollected(favoritesItemsRelationDao.isCollected(dto.getUserId(), relation.getItemId()) ? 1 : 0);
vo.setIsMine(userItemsRelationDao.isExisted(dto.getUserId(), item.getId()) ? 1 : 0);
// 设置收藏数
long count = favoritesItemsRelationDao.countByItemId(item.getId());
if (item.getSourceType().equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
if (count < 1000) {
vo.setCollectCount(String.valueOf(count));
} else {
vo.setCollectCount(String.format("%.1f", (double) count / 1000) + "k");
}
// 设置图片或视频
Map<String, Object> homePageMap = new HashMap<>();
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
homePageMap.put("width", "0");
homePageMap.put("height", "0");
if (StringUtils.isNotBlank(item.getVideos())) {
String[] vedioImage = item.getVideos().split(";");
if (vedioImage[0].contains(",")) {
String[] video = vedioImage[0].split(",");
homePageMap = getImageMap(video[1]);
homePageMap.put("url", video[1]);
homePageMap.put("type", 1);
}
} else {
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
vo.setIsCollected(0);
vo.setIsMine(0);
if (dto.getUserId() != 0L) {
vo.setIsCollected(favoritesItemsRelationDao.isCollected(dto.getUserId(), relation.getItemId()) ? 1 : 0);
vo.setIsMine(userItemsRelationDao.isExisted(dto.getUserId(), item.getId()) ? 1 : 0);
}
vo.setHomePageImage(homePageMap);
// 设置收藏数
vo.setCollectCount(getCollectCount(item.getId(), item.getSourceType()));
AgentTranceResponseVo agentTranceResponseVo = new AgentTranceResponseVo();
agentTranceResponseVo.setAgentTraceInfo_("");
agentTranceResponseVo.setViewType(2);
// 设置图片或视频
vo.setHomePageImage(getImage(item));
agentTranceResponseVo.setDetail(vo);
list.add(agentTranceResponseVo);
}
......@@ -403,10 +408,10 @@ public class FavoritesServiceImpl implements FavoritesService {
try {
Favorites favorites = favoritesDao.info(dto.getFavoritesId());
if (Objects.isNull(favorites)) {
Result.failed("数据异常,收藏册不存在");
return Result.failed("数据异常,收藏册不存在");
}
if (favoritesItemsRelationDao.isCollected(favorites.getUserId(), dto.getId())) {
Result.failed("您已经收藏过该藏品");
return Result.failed("您已经收藏过该藏品");
}
FavoritesItemsRelation favoritesItemsRelation = new FavoritesItemsRelation();
......@@ -487,6 +492,31 @@ public class FavoritesServiceImpl implements FavoritesService {
}
}
private Map<String, Object> getImage(Item item) {
Map<String, Object> homePageMap = new HashMap<>();
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
homePageMap.put("width", "0");
homePageMap.put("height", "0");
if (StringUtils.isNotBlank(item.getVideos())) {
String[] vedioImage = item.getVideos().split(";");
if (vedioImage[0].contains(",")) {
String[] video = vedioImage[0].split(",");
homePageMap = getImageMap(video[1]);
homePageMap.put("url", video[1]);
homePageMap.put("type", 1);
}
} else {
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
}
return homePageMap;
}
private Map<String, Object> getImageMap(String image) {
Map<String, Object> map = new HashMap<>();
String[] _image = image.split("_");
......@@ -496,4 +526,29 @@ public class FavoritesServiceImpl implements FavoritesService {
map.put("height", result[1]);
return map;
}
private String getCollectCount(Long itemId, Integer sourceType) {
String countString = "";
// 设置收藏数
long count = favoritesItemsRelationDao.countByItemId(itemId);
if (sourceType.equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
if (count < 1000) {
countString = String.valueOf(count);
} else {
countString = String.format("%.1f", (double) count / 1000) + "k";
}
return countString;
}
private String getPrice(Long price) {
String priceString = "";
if (price % 100 == 0) {
priceString = String.valueOf(price / 100);
} else {
priceString = String.valueOf(price.doubleValue() / 100);
}
return StringUtil.formatAmount(priceString);
}
}
......@@ -69,8 +69,25 @@ public class FootPrintServiceImpl implements FootPrintService {
List<ItemResponseVo> weekList = new ArrayList<>();
List<ItemResponseVo> monthList = new ArrayList<>();
for (Footprint footprint : list) {
Item item = itemDao.findDetails(footprint.getItemId());
ItemResponseVo itemResponseVo = new ItemResponseVo();
Item item = itemDao.findById(footprint.getItemId());
if (Objects.isNull(item)) {
itemResponseVo.setIsDeleted(1);
if (footprint.getAddTime().compareTo(today) >= 0) {
todayList.add(itemResponseVo);
}
if (footprint.getAddTime().compareTo(yesterday) >= 0 && footprint.getAddTime().compareTo(today) <= 0) {
yesterdayList.add(itemResponseVo);
}
if (footprint.getAddTime().compareTo(week) >= 0 && footprint.getAddTime().compareTo(yesterday) <= 0) {
weekList.add(itemResponseVo);
}
if (footprint.getAddTime().compareTo(month) >= 0 && footprint.getAddTime().compareTo(week) <= 0) {
monthList.add(itemResponseVo);
}
continue;
}
itemResponseVo.setIsDeleted(0);
// 设置基本信息
itemResponseVo.setId(footprint.getId());
itemResponseVo.setItemId(item.getId());
......@@ -78,48 +95,14 @@ public class FootPrintServiceImpl implements FootPrintService {
itemResponseVo.setImages(item.getImages());
itemResponseVo.setDetail(item.getDetail());
// 设置价格
if (item.getPrice() % 100 == 0) {
itemResponseVo.setPrice(String.valueOf(item.getPrice() / 100));
} else {
itemResponseVo.setPrice(String.valueOf(item.getPrice().doubleValue() / 100));
}
itemResponseVo.setPrice(StringUtil.formatAmount(itemResponseVo.getPrice()));
itemResponseVo.setPrice(getPrice(item.getPrice()));
// 设置是否收藏或是否是自己发布的
itemResponseVo.setIsCollected(favoritesItemsRelationDao.isCollected(dto.getUserId(), footprint.getItemId()) ? 1 : 0);
itemResponseVo.setIsMine(userItemsRelationDao.isExisted(dto.getUserId(), item.getId()) ? 1 : 0);
// 设置收藏数
long count = favoritesItemsRelationDao.countByItemId(item.getId());
if (item.getSourceType().equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
if (count < 1000) {
itemResponseVo.setCollectCount(String.valueOf(count));
} else {
itemResponseVo.setCollectCount(String.format("%.1f", (double) count / 1000) + "k");
}
itemResponseVo.setCollectCount(getCollectCount(item.getId(), item.getSourceType()));
// 设置图片或视频
Map<String, Object> homePageMap = new HashMap<>();
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
homePageMap.put("width", "0");
homePageMap.put("height", "0");
if (StringUtils.isNotBlank(item.getVideos())) {
String[] vedioImage = item.getVideos().split(";");
if (vedioImage[0].contains(",")) {
String[] video = vedioImage[0].split(",");
homePageMap = getImageMap(video[1]);
homePageMap.put("url", video[1]);
homePageMap.put("type", 1);
}
} else {
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
}
itemResponseVo.setHomePageImage(homePageMap);
itemResponseVo.setHomePageImage(getImage(item));
if (footprint.getAddTime().compareTo(today) >= 0) {
todayList.add(itemResponseVo);
......@@ -198,8 +181,25 @@ public class FootPrintServiceImpl implements FootPrintService {
List<ItemResponseVo> weekList = new ArrayList<>();
List<ItemResponseVo> monthList = new ArrayList<>();
for (Footprint footprint : list) {
Item item = itemDao.findDetails(footprint.getItemId());
ItemResponseVo itemResponseVo = new ItemResponseVo();
Item item = itemDao.findById(footprint.getItemId());
if (Objects.isNull(item)) {
itemResponseVo.setIsDeleted(1);
if (footprint.getAddTime().compareTo(today) >= 0) {
todayList.add(itemResponseVo);
}
if (footprint.getAddTime().compareTo(yesterday) >= 0 && footprint.getAddTime().compareTo(today) <= 0) {
yesterdayList.add(itemResponseVo);
}
if (footprint.getAddTime().compareTo(week) >= 0 && footprint.getAddTime().compareTo(yesterday) <= 0) {
weekList.add(itemResponseVo);
}
if (footprint.getAddTime().compareTo(month) >= 0 && footprint.getAddTime().compareTo(week) <= 0) {
monthList.add(itemResponseVo);
}
continue;
}
itemResponseVo.setIsDeleted(0);
// 设置基本信息
itemResponseVo.setId(footprint.getId());
itemResponseVo.setItemId(item.getId());
......@@ -207,48 +207,14 @@ public class FootPrintServiceImpl implements FootPrintService {
itemResponseVo.setImages(item.getImages());
itemResponseVo.setDetail(item.getDetail());
// 设置价格
if (item.getPrice() % 100 == 0) {
itemResponseVo.setPrice(String.valueOf(item.getPrice() / 100));
} else {
itemResponseVo.setPrice(String.valueOf(item.getPrice().doubleValue() / 100));
}
itemResponseVo.setPrice(StringUtil.formatAmount(itemResponseVo.getPrice()));
itemResponseVo.setPrice(getPrice(item.getPrice()));
// 设置是否收藏或是否是自己发布的
itemResponseVo.setIsCollected(favoritesItemsRelationDao.isCollected(dto.getUserId(), footprint.getItemId()) ? 1 : 0);
itemResponseVo.setIsMine(userItemsRelationDao.isExisted(dto.getUserId(), item.getId()) ? 1 : 0);
// 设置收藏数
long count = favoritesItemsRelationDao.countByItemId(item.getId());
if (item.getSourceType().equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
if (count < 1000) {
itemResponseVo.setCollectCount(String.valueOf(count));
} else {
itemResponseVo.setCollectCount(String.format("%.1f", (double) count / 1000) + "k");
}
itemResponseVo.setCollectCount(getCollectCount(item.getId(), item.getSourceType()));
// 设置图片或视频
Map<String, Object> homePageMap = new HashMap<>();
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
homePageMap.put("width", "0");
homePageMap.put("height", "0");
if (StringUtils.isNotBlank(item.getVideos())) {
String[] vedioImage = item.getVideos().split(";");
if (vedioImage[0].contains(",")) {
String[] video = vedioImage[0].split(",");
homePageMap = getImageMap(video[1]);
homePageMap.put("url", video[1]);
homePageMap.put("type", 1);
}
} else {
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
}
itemResponseVo.setHomePageImage(homePageMap);
itemResponseVo.setHomePageImage(getImage(item));
if (footprint.getAddTime().compareTo(today) >= 0) {
......@@ -302,6 +268,31 @@ public class FootPrintServiceImpl implements FootPrintService {
}
}
private Map<String, Object> getImage(Item item) {
Map<String, Object> homePageMap = new HashMap<>();
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
homePageMap.put("width", "0");
homePageMap.put("height", "0");
if (StringUtils.isNotBlank(item.getVideos())) {
String[] vedioImage = item.getVideos().split(";");
if (vedioImage[0].contains(",")) {
String[] video = vedioImage[0].split(",");
homePageMap = getImageMap(video[1]);
homePageMap.put("url", video[1]);
homePageMap.put("type", 1);
}
} else {
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
}
return homePageMap;
}
private Map<String, Object> getImageMap(String image) {
Map<String, Object> map = new HashMap<>();
String[] _image = image.split("_");
......@@ -311,4 +302,29 @@ public class FootPrintServiceImpl implements FootPrintService {
map.put("height", result[1]);
return map;
}
private String getCollectCount(Long itemId, Integer sourceType) {
String countString = "";
// 设置收藏数
long count = favoritesItemsRelationDao.countByItemId(itemId);
if (sourceType.equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
if (count < 1000) {
countString = String.valueOf(count);
} else {
countString = String.format("%.1f", (double) count / 1000) + "k";
}
return countString;
}
private String getPrice(Long price) {
String priceString = "";
if (price % 100 == 0) {
priceString = String.valueOf(price / 100);
} else {
priceString = String.valueOf(price.doubleValue() / 100);
}
return StringUtil.formatAmount(priceString);
}
}
......@@ -5,6 +5,7 @@ import com.qiniu.storage.model.FileInfo;
import com.wwdz.ch.core.consts.CommConsts;
import com.wwdz.ch.core.consts.CommonEnum;
import com.wwdz.ch.core.consts.MediaTypeEnum;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.storage.QiniuStorage;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.MediaUtil;
......@@ -58,6 +59,8 @@ public class ItemServiceImpl implements ItemService {
private WxLoginService wxLoginService;
@Autowired
private QiniuStorage qiniuStorage;
@Autowired
private UserDao userDao;
@Override
public Result nameList(ItemRequestDto dto) {
......@@ -72,6 +75,26 @@ public class ItemServiceImpl implements ItemService {
}
}
@Override
public Result recommend() {
try {
List<Map<String, Object>> list = favoritesItemsRelationDao.findItemIdByCount();
if (CollectionUtils.isEmpty(list)) {
return Result.success();
}
Random random = new Random();
int index = random.nextInt(20);
Long itemId = (Long) list.get(index).get("item_id");
Item item = itemDao.findDetails(itemId);
Map<String, Object> map = new HashMap<>();
map.put("name", item.getName());
return Result.success(map);
} catch (Exception e) {
logger.error("搜索推荐失败", e);
return Result.failed("搜索推荐失败");
}
}
@Override
public Result page(ItemRequestDto dto) {
......@@ -103,35 +126,9 @@ public class ItemServiceImpl implements ItemService {
vo.setImages(item.getImages());
vo.setSourceType(item.getSourceType());
// 设置价格
if (item.getPrice() % 100 == 0) {
vo.setPrice(String.valueOf(item.getPrice() / 100));
} else {
vo.setPrice(String.valueOf(item.getPrice().doubleValue() / 100));
}
vo.setPrice(StringUtil.formatAmount(vo.getPrice()));
vo.setPrice(getPrice(item.getPrice()));
// 设置图片或视频
Map<String, Object> homePageMap = new HashMap<>();
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
homePageMap.put("width", "0");
homePageMap.put("height", "0");
if (StringUtils.isNotBlank(item.getVideos())) {
String[] vedioImage = item.getVideos().split(";");
if (vedioImage[0].contains(",")) {
String[] video = vedioImage[0].split(",");
homePageMap = getImageMap(video[1]);
homePageMap.put("url", video[1]);
homePageMap.put("type", 1);
}
} else {
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
}
vo.setHomePageImage(homePageMap);
vo.setHomePageImage(getImage(item));
// 设置是否收藏和是否是自己发布的
vo.setIsCollected(0);
vo.setIsMine(0);
......@@ -140,15 +137,7 @@ public class ItemServiceImpl implements ItemService {
vo.setIsMine(userItemsRelationDao.isExisted(dto.getUserId(), item.getId()) ? 1 : 0);
}
// 设置收藏数
long count = favoritesItemsRelationDao.countByItemId(item.getId());
if (item.getSourceType().equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
if (count < 1000) {
vo.setCollectCount(String.valueOf(count));
} else {
vo.setCollectCount(String.format("%.1f", (double) count / 1000) + "k");
}
vo.setCollectCount(getCollectCount(item.getId(), item.getSourceType()));
AgentTranceResponseVo agentTranceResponseVo = new AgentTranceResponseVo();
agentTranceResponseVo.setAgentTraceInfo_("");
......@@ -222,9 +211,13 @@ public class ItemServiceImpl implements ItemService {
@Override
public Result info(ItemRequestDto dto) {
try {
Item item = itemDao.findDetails(dto.getId());
if (null == item.getId()) {
return Result.failed("数据异常,该藏品不存在");
Item item = itemDao.findById(dto.getId());
if (Objects.isNull(item)) {
if (!dto.getUserId().equals(0L)) {
// 如果当前用户已收藏该藏品,则删除收藏关联
favoritesItemsRelationDao.deleteByUserIdItemId(dto.getUserId(), dto.getId());
}
return Result.failed(ResultCode.INVALID_DATA.getCode(), "该藏品已经被移除");
}
ItemResponseVo itemResponseVo = new ItemResponseVo();
// 设置基本信息
......@@ -256,12 +249,7 @@ public class ItemServiceImpl implements ItemService {
itemResponseVo.setCategoryName(category.getName());
}
// 设置价格
if (item.getPrice() % 100 == 0) {
itemResponseVo.setPrice(String.valueOf(item.getPrice() / 100));
} else {
itemResponseVo.setPrice(String.valueOf(item.getPrice().doubleValue() / 100));
}
itemResponseVo.setPrice(StringUtil.formatAmount(itemResponseVo.getPrice()));
itemResponseVo.setPrice(getPrice(item.getPrice()));
// 设置是否收藏或是否是自己发布的
itemResponseVo.setIsCollected(0);
itemResponseVo.setIsMine(0);
......@@ -291,6 +279,16 @@ public class ItemServiceImpl implements ItemService {
footPrintDao.upateTime(footprint);
}
}
// 设置藏品的发布用户昵称
String itemNickname = "";
UserItemsRelation userItemsRelation = userItemsRelationDao.find(item.getId());
if (Objects.nonNull(userItemsRelation)) {
User user = userDao.queryById(userItemsRelation.getUserId());
if (Objects.nonNull(user)) {
itemNickname = user.getNickname();
}
}
itemResponseVo.setItemNickname(itemNickname);
logger.info("【请求结束】查看藏品详情成功");
return Result.success(itemResponseVo);
} catch (Exception e) {
......@@ -306,7 +304,7 @@ public class ItemServiceImpl implements ItemService {
if (dto.getUserId().equals(0L)) {
return Result.failed("您尚未登录,请先登录");
}
Item item = itemDao.findDetails(dto.getId());
Item item = itemDao.findById(dto.getId());
if (Objects.isNull(item)) {
return Result.failed("数据异常,藏品不存在");
}
......@@ -329,16 +327,7 @@ public class ItemServiceImpl implements ItemService {
favoritesItemsRelationDao.insert(favoritesItemsRelation);
// 查询收藏数
long count = favoritesItemsRelationDao.countByItemId(dto.getId());
if (item.getSourceType().equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
String collectCount = "0";
if (count < 1000) {
collectCount = String.valueOf(count);
} else {
collectCount = String.format("%.1f", (double) count / 1000) + "k";
}
String collectCount = getCollectCount(item.getId(), item.getSourceType());
Map<String, Object> map = new HashMap<>();
map.put("favoritesId", favorites.getId());
......@@ -357,7 +346,7 @@ public class ItemServiceImpl implements ItemService {
if (dto.getUserId().equals(0L)) {
return Result.failed("您尚未登录,请先登录");
}
Item item = itemDao.findDetails(dto.getId());
Item item = itemDao.findById(dto.getId());
if (Objects.isNull(item)) {
return Result.failed("数据异常,藏品不存在");
}
......@@ -369,16 +358,7 @@ public class ItemServiceImpl implements ItemService {
favoritesItemsRelationDao.deleteByUserIdItemId(dto.getUserId(), dto.getId());
// 查询收藏数
long count = favoritesItemsRelationDao.countByItemId(dto.getId());
if (item.getSourceType().equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
String collectCount = "0";
if (count < 1000) {
collectCount = String.valueOf(count);
} else {
collectCount = String.format("%.1f", (double) count / 1000) + "k";
}
String collectCount = getCollectCount(item.getId(), item.getSourceType());
Map<String, Object> map = new HashMap<>();
map.put("collectCount", collectCount);
......@@ -392,8 +372,8 @@ public class ItemServiceImpl implements ItemService {
@Override
public Result update(ItemRequestDto dto) {
try {
Item item = itemDao.findDetails(dto.getId());
if (null == item.getId()) {
Item item = itemDao.findById(dto.getId());
if (Objects.isNull(item)) {
return Result.failed("数据异常,该藏品不存在");
}
......@@ -417,6 +397,7 @@ public class ItemServiceImpl implements ItemService {
favoritesItemsRelation.setUserId(dto.getUserId());
favoritesItemsRelation.setFavoritesId(dto.getFavoritesId());
favoritesItemsRelation.setItemId(item.getId());
favoritesItemsRelation.setAddTime(now);
favoritesItemsRelationDao.insert(favoritesItemsRelation);
Map<String, Object> map = new HashMap<>();
......@@ -556,6 +537,31 @@ public class ItemServiceImpl implements ItemService {
return null;
}
private Map<String, Object> getImage(Item item) {
Map<String, Object> homePageMap = new HashMap<>();
String[] image = item.getImages().split(";");
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
homePageMap.put("width", "0");
homePageMap.put("height", "0");
if (StringUtils.isNotBlank(item.getVideos())) {
String[] vedioImage = item.getVideos().split(";");
if (vedioImage[0].contains(",")) {
String[] video = vedioImage[0].split(",");
homePageMap = getImageMap(video[1]);
homePageMap.put("url", video[1]);
homePageMap.put("type", 1);
}
} else {
if (image[0].contains("_")) {
homePageMap = getImageMap(image[0]);
homePageMap.put("url", image[0]);
homePageMap.put("type", 2);
}
}
return homePageMap;
}
private Map<String, Object> getImageMap(String image) {
Map<String, Object> map = new HashMap<>();
String[] _image = image.split("_");
......@@ -565,4 +571,29 @@ public class ItemServiceImpl implements ItemService {
map.put("height", result[1]);
return map;
}
private String getCollectCount(Long itemId, Integer sourceType) {
String countString = "";
// 设置收藏数
long count = favoritesItemsRelationDao.countByItemId(itemId);
if (sourceType.equals(CommonEnum.SourceTypeEnum.USER_UPLOAD.getCode())) {
count --;
}
if (count < 1000) {
countString = String.valueOf(count);
} else {
countString = String.format("%.1f", (double) count / 1000) + "k";
}
return countString;
}
private String getPrice(Long price) {
String priceString = "";
if (price % 100 == 0) {
priceString = String.valueOf(price / 100);
} else {
priceString = String.valueOf(price.doubleValue() / 100);
}
return StringUtil.formatAmount(priceString);
}
}
......@@ -3,8 +3,8 @@ package com.wwdz.ch.wx.impl;
import com.alibaba.fastjson.JSONObject;
import com.wwdz.ch.core.captcha.CaptchaCodeManager;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.notify.AliSmsSender;
import com.wwdz.ch.core.notify.NotifyService;
import com.wwdz.ch.core.notify.NotifyType;
import com.wwdz.ch.core.notify.SmsResult;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.type.UserTypeEnum;
......@@ -61,6 +61,8 @@ public class UserServiceImpl implements UserService {
@Value("${avatar-url}")
private String avatarUrl;
@Autowired
private AliSmsSender aliSmsSender;
@Transactional
......@@ -186,7 +188,7 @@ public class UserServiceImpl implements UserService {
return Result.failed("手机号格式不正确");
}
code = CharUtil.getRandomNum(6);
SmsResult smsResult = notifyService.notifySmsTemplate(dto.getMobile(), NotifyType.CAPTCHA, new String[]{code, "1"});
SmsResult smsResult = aliSmsSender.sendWithTemplate(dto.getMobile(), code);
if (smsResult != null) {
logger.info("*****腾讯云短信发送->请求验证码,短信发送结果:{}", JSONObject.toJSONString(smsResult));
}
......
......@@ -6,4 +6,5 @@ import com.wwdz.ch.wx.entity.request.CategoryRequestDto;
public interface CategoryService {
Result top(CategoryRequestDto dto);
Result child(CategoryRequestDto dto);
Result find(CategoryRequestDto dto);
}
......@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletResponse;
public interface ItemService {
Result nameList(ItemRequestDto dto);
Result recommend();
Result page(ItemRequestDto dto);
Result list(ItemRequestDto dto);
......
......@@ -62,4 +62,10 @@ public class WxCategoryController {
dto.setId(Integer.parseInt(id));
return categoryService.child(dto);
}
@ApiOperation(value = "名称查询")
@PostMapping(value = "/find")
public Result find(@RequestBody CategoryRequestDto dto) {
return categoryService.find(dto);
}
}
......@@ -167,7 +167,10 @@ public class WxFavoritesController {
FavoritesRequestDto dto = new FavoritesRequestDto();
dto.setId(Long.parseLong(id));
dto.setUserId(Long.parseLong(userId));
dto.setUserId(0L);
if (StringUtils.isNotBlank(userId)) {
dto.setUserId(Long.parseLong(userId));
}
dto.setPage(Integer.parseInt(page));
dto.setSize(Integer.parseInt(size));
return favoritesService.itemList(dto);
......
......@@ -45,6 +45,12 @@ public class WxItemController {
return itemService.nameList(dto);
}
@ApiOperation(value = "推荐词汇")
@PostMapping("/recommend")
public Result recommend() {
return itemService.recommend();
}
@ApiOperation(value = "分页查询")
@PostMapping("/page")
public Result page(@RequestBody KlDataRequestDto klDataRequestDto) {
......
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