You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
null/ExchangePointProductsServic...

250 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.rabbiter.market.service.sale_management.exchange_point_products.impl;
import com.rabbiter.market.common.redis.service.RedisTemplateService;
import com.rabbiter.market.domain.goods_management.goods.Goods;
import com.rabbiter.market.domain.goods_management.point_products.PointProducts;
import com.rabbiter.market.domain.member_management.member.Member;
import com.rabbiter.market.domain.personnel_management.employee.Employee;
import com.rabbiter.market.domain.sale_management.exchange_point_products.ExchangePointProducts;
import com.rabbiter.market.mapper.sale_management.exchange_point_products.ExchangePointProductsMapper;
import com.rabbiter.market.qo.exchange_point_products_records.QueryExchangePointProductsRecords;
import com.rabbiter.market.service.goods_management.goods.IGoodsService;
import com.rabbiter.market.service.goods_management.point_products.IPointProductsService;
import com.rabbiter.market.service.member_management.member.IMemberService;
import com.rabbiter.market.service.sale_management.exchange_point_products.IExchangePointProductsService;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.*;
@Service
public class ExchangePointProductsServiceImpl extends ServiceImpl<ExchangePointProductsMapper, ExchangePointProducts> implements IExchangePointProductsService {
// 渚濊禆娉ㄥ叆...
/**
* 鏍规嵁浼氬憳ID鏌ヨ鍙厬鎹㈠晢鍝侀<E98D9D>夐」
* @param memberId 浼氬憳ID锛堝彲涓虹┖锛<E29496>
* @return 鍖呭惈鍟嗗搧ID鍜屽悕绉扮殑Map鍒楄〃
* 閫昏緫璇存槑锛<E6A791>
* - 褰搈emberId涓虹┖鏃讹紝杩斿洖鎵<E6B496>鏈夐渶瑕佺Н鍒嗙殑鍟嗗搧
* - 褰搈emberId瀛樺湪鏃讹紝鍙繑鍥炰細鍛樺綋鍓嶇Н鍒嗗彲鍏戞崲鐨勫晢鍝<E699A2>
*/
@Autowired
private IMemberService memberService;
@Autowired
private IPointProductsService pointProductsService;
@Autowired
private RedisTemplateService redisTemplateService;
@Autowired
private IGoodsService goodsService;
@Override
public List<Map<String, Object>> queryPointProductBymemberId(Long memberId) {
/**
* 閫氳繃鍟嗗搧ID鑾峰彇绉垎鍟嗗搧璇︽儏
* @param goodsId 鍟嗗搧ID
* @return 绉垎鍟嗗搧瀹炰綋
*/
Member member = memberService.getById(memberId);
QueryWrapper<PointProducts> pointProductsQueryWrapper = new QueryWrapper<PointProducts>();
if (memberId == null) {
pointProductsQueryWrapper.gt("integral", 0L);
} else {
pointProductsQueryWrapper.le("integral", member.getIntegral());
}
List<PointProducts> list = pointProductsService.list(pointProductsQueryWrapper);
List<Map<String, Object>> mapArrayList = new ArrayList<>();
for (PointProducts pointProducts : list) {
Map<String, Object> map = new HashMap<>();
map.put("id", pointProducts.getGoodsId());
map.put("name", pointProducts.getGoodsName());
mapArrayList.add(map);
}
return mapArrayList;
}
@Override
public PointProducts queryPointProductByGoodsId(Long goodsId) {
/**
* 淇濆瓨绉垎鍏戞崲璁板綍
* @param exchangePointProducts 鍏戞崲璁板綍瀹炰綋
* @param token 鐢ㄦ埛浠ょ墝
* 鏍稿績閫昏緫锛<E7B7AB>
* 1. 鐢熸垚鍞竴鍏戞崲鍗曞彿
* 2. 璁剧疆鎿嶄綔浜轰俊鎭紙浠嶳edis鑾峰彇锛<E5BD87>
* 3. 鏇存柊浼氬憳绉垎
* 4. 淇濆瓨鍏戞崲璁板綍
*/
PointProducts pointProducts = pointProductsService.getOne(new QueryWrapper<PointProducts>().eq(goodsId != null, "goods_id", goodsId));
return pointProducts;
}
@Override
public void saveExchangePointProductRecords(ExchangePointProducts exchangePointProducts, String token) {
/**
* 鏌ヨ鏈夊厬鎹㈣褰曠殑浼氬憳鎵嬫満鍙烽<E98D99>夐」
* @return 鍖呭惈浼氬憳ID鍜屾墜鏈哄彿鐨凪ap鍒楄〃
* 娉ㄦ剰锛氫粎鏌ヨ鐘舵<E99098>佹甯哥殑鍏戞崲璁板綍
*/
Employee employee = JSONObject.parseObject(redisTemplateService.getCacheObject(token), Employee.class);
exchangePointProducts.setCn(IdWorker.getIdStr());
exchangePointProducts.setUpdateby(employee.getNickName());
exchangePointProducts.setUpdateId(employee.getId());
exchangePointProducts.setUpdateTime(new Date());
exchangePointProducts.setState(ExchangePointProducts.STATE_NORMAL);
Member member = memberService.getById(exchangePointProducts.getMemberId());
member.setIntegral(member.getIntegral() - exchangePointProducts.getIntegral());
memberService.updateById(member);
super.save(exchangePointProducts);
}
@Override
public List<Map<String, Object>> queryOptionsMemberPhone() {
/**
* 閫昏緫鍒犻櫎鍏戞崲璁板綍锛堟爣璁板垹闄わ級
* @param cn 鍏戞崲鍗曞彿
*/
QueryWrapper<ExchangePointProducts> wrapper = new QueryWrapper<ExchangePointProducts>()
.select("member_id")
.eq("state", ExchangePointProducts.STATE_NORMAL)
.groupBy("member_id");
List<ExchangePointProducts> list = super.list(wrapper);
List<Long> memberIds = new ArrayList<>();
for (ExchangePointProducts exchangePointProducts : list) {
memberIds.add(exchangePointProducts.getMemberId());
}
if (memberIds==null || memberIds.size()<=0){
return null;
}
List<Member> members = memberService.listByIds(memberIds);
List<Map<String, Object>> vos = new ArrayList<>();
for (Member member : members) {
Map<String, Object> map = new HashMap<>();
map.put("id", member.getId());
map.put("name", member.getPhone());
vos.add(map);
}
return vos;
}
@Override
public void delExchangePointProducts(String cn) {
/**
* 鍒嗛〉鏌ヨ鍏戞崲璁板綍
* @param qo 鏌ヨ鏉′欢瀵硅薄
* @return 鍒嗛〉缁撴灉锛堝寘鍚叧鑱旂殑浼氬憳鎵嬫満鍙峰拰鍟嗗搧淇℃伅锛<E4BC85>
* 鍔熻兘鐗圭偣锛<E581A3>
* - 鏀寔鏃堕棿鑼冨洿杩囨护
* - 鏀寔浼氬憳ID杩囨护
* - 鏀寔鍗曞彿妯$硦鏌ヨ
* - 鑷姩琛ュ厖鍟嗗搧灏侀潰鍜屽悕绉<E68295>
*/
UpdateWrapper<ExchangePointProducts> wrapper = new UpdateWrapper<ExchangePointProducts>()
.set("state", ExchangePointProducts.STATE_DEL)
.eq("cn", cn);
super.update(wrapper);
}
@Override
public Page<ExchangePointProducts> queryPageByQoExchangePointProducts(QueryExchangePointProductsRecords qo) {
/**
* 鏌ヨ鎵<EE8797>鏈夊彲鍏戞崲鍟嗗搧閫夐」
* @return 鍖呭惈鍟嗗搧ID鍜屽悕绉扮殑Map鍒楄〃
*/
Page<ExchangePointProducts> page = new Page<>(qo.getCurrentPage(), qo.getPageSize());
QueryWrapper<ExchangePointProducts> queryWrapper = new QueryWrapper<ExchangePointProducts>()
.eq("state", ExchangePointProducts.STATE_NORMAL)
.eq(qo.getMemberId() != null, "member_id", qo.getMemberId())
.ge(StringUtils.hasText(qo.getStartTime()), "update_time", qo.getStartTime())
.le(StringUtils.hasText(qo.getEndTime()), "update_time", qo.getEndTime())
.likeRight(StringUtils.hasText(qo.getCn()), "cn", qo.getCn());
super.page(page, queryWrapper);
for (ExchangePointProducts record : page.getRecords()) {
Member member = memberService.getById(record.getMemberId());
record.setMemberPhone(member.getPhone());
Goods goods = goodsService.getById(record.getGoodsId());
record.setGoodsCoverUrl(goods.getCoverUrl());
record.setGoodsName(goods.getName());
}
return page;
}
@Override
public List<Map<String, Object>> queryOptionsPointProducts() { /**
* 鏌ヨ鎵<EE8797>鏈夋甯哥姸鎬佷細鍛橀<E98D9B>夐」
* @return 鍖呭惈浼氬憳ID鍜屾墜鏈哄彿鐨凪ap鍒楄〃
*/
QueryWrapper<PointProducts> wrapper = new QueryWrapper<PointProducts>()
.eq("state", PointProducts.STATE_NORMAL);
List<PointProducts> list = pointProductsService.list(wrapper);
List<Map<String, Object>> vos = new ArrayList<>();
for (PointProducts pointProducts : list) {
Map<String, Object> map = new HashMap<>();
map.put("id", pointProducts.getGoodsId());
map.put("name", pointProducts.getGoodsName());
vos.add(map);
}
return vos;
}
@Override
public List<Map<String, Object>> queryOptionsMember() {
/**
* 鏍规嵁鍟嗗搧ID鏌ヨ鏈夎冻澶熺Н鍒嗗厬鎹㈢殑浼氬憳
* @param goodsId 鍟嗗搧ID锛堝彲涓虹┖锛<E29496>
* @return 鍖呭惈浼氬憳ID鍜屾墜鏈哄彿鐨凪ap鍒楄〃
* 閫昏緫璇存槑锛<E6A791>
* - 褰撳晢鍝両D瀛樺湪鏃讹紝鏌ヨ绉垎瓒冲鐨勪細鍛<E7B4B0>
* - 褰撳晢鍝両D涓虹┖鏃讹紝杩斿洖鎵<E6B496>鏈夋湁绉垎鐨勪細鍛<E7B4B0>
*/
List<Map<String, Object>> vos = new ArrayList<>();
QueryWrapper<Member> wrapper = new QueryWrapper<Member>()
.groupBy("id")
.eq("state", Member.STATE_NORMAL);
List<Member> list = memberService.list(wrapper);
for (Member member : list) {
Map<String, Object> map = new HashMap<>();
map.put("id", member.getId());
map.put("name", member.getPhone());
vos.add(map);
}
return vos;
}
@Override
public List<Map<String, Object>> queryMemberByGoodsId(Long goodsId) {
List<Member> members = new ArrayList<>();
QueryWrapper<Member> memberQueryWrapper = new QueryWrapper<Member>();
memberQueryWrapper.eq("state", Member.STATE_NORMAL);
if (goodsId != null) {
PointProducts pointProducts = pointProductsService.getOne(new QueryWrapper<PointProducts>()
.eq("goods_id", goodsId)
.eq("state", PointProducts.STATE_NORMAL));
memberQueryWrapper.ge("integral", pointProducts.getIntegral());
} else {
memberQueryWrapper.gt("integral", 0);
}
members = memberService.list(memberQueryWrapper);
List<Map<String, Object>> vos = new ArrayList<>();
for (Member member : members) {
Map<String, Object> map = new HashMap<>();
map.put("id", member.getId());
map.put("name", member.getPhone());
vos.add(map);
}
return vos;
}
}