package com.yeshi.fanli.service.impl.user;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
import org.yeshi.utils.DateUtil;
|
|
import com.yeshi.fanli.dao.mybatis.share.UserShareGoodsGroupMapper;
|
import com.yeshi.fanli.entity.bus.share.UserShareGoodsGroup;
|
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
|
import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
|
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
|
@Service
|
public class UserShareGoodsGroupServiceImpl implements UserShareGoodsGroupService {
|
|
@Resource
|
private HongBaoManageService hongBaoManageService;
|
|
@Resource
|
private CommonGoodsService commonGoodsService;
|
|
@Resource
|
private UserShareGoodsGroupMapper userShareGoodsGroupMapper;
|
|
@Override
|
public int insert(UserShareGoodsGroup record) {
|
return userShareGoodsGroupMapper.insert(record);
|
}
|
|
@Override
|
public int insertSelective(UserShareGoodsGroup record) {
|
return userShareGoodsGroupMapper.insertSelective(record);
|
}
|
|
@Override
|
public UserShareGoodsGroup selectByPrimaryKey(Long id) {
|
return userShareGoodsGroupMapper.selectByPrimaryKey(id);
|
}
|
|
@Override
|
public int updateByPrimaryKeySelective(UserShareGoodsGroup record) {
|
return userShareGoodsGroupMapper.updateByPrimaryKeySelective(record);
|
}
|
|
@Override
|
public int updateByPrimaryKey(UserShareGoodsGroup record) {
|
return userShareGoodsGroupMapper.updateByPrimaryKey(record);
|
}
|
|
@Override
|
public List<UserShareGoodsGroup> listByRecordId(Long recordId) {
|
return userShareGoodsGroupMapper.listByRecordId(recordId);
|
}
|
|
@Override
|
public UserShareGoodsGroup getSingleGoods(Long cid, Long uid) {
|
return userShareGoodsGroupMapper.getSingleGoods(cid, uid);
|
}
|
|
@Override
|
public int insertBatch(List<UserShareGoodsGroup> list) {
|
return userShareGoodsGroupMapper.insertBatch(list);
|
}
|
|
@Override
|
public UserShareGoodsGroup getNewestRecord(Long uid, Long auctionId) {
|
return userShareGoodsGroupMapper.getNewestRecord(uid, auctionId);
|
}
|
|
|
/**
|
* 更新浏览记录数据
|
* @param shareId 分享id
|
* @param count 浏览次数
|
*/
|
@Override
|
public void updateBrowseRecord (Long shareId, int count) throws UserShareGoodsRecordException{
|
|
if (shareId == null) {
|
throw new UserShareGoodsRecordException(1, "分享id为空");
|
}
|
|
List<UserShareGoodsGroup> list = listByRecordId(shareId);
|
if (list == null || list.size() == 0) {
|
throw new UserShareGoodsRecordException(1, "分享商品已不存在");
|
}
|
|
List<UserShareGoodsGroup> listUpdate = new ArrayList<UserShareGoodsGroup>();
|
|
for (UserShareGoodsGroup group: list) {
|
// 注意: 修改记录数据、但不可修改更新设置
|
UserShareGoodsGroup shareGoodsGroup = new UserShareGoodsGroup(group.getId());
|
|
shareGoodsGroup.setTotalBrowse(group.getTotalBrowse() + count);
|
|
Date browseTime = group.getBrowseTime();
|
if (DateUtil.isSameDay(browseTime, new Date())) {
|
shareGoodsGroup.setTodayBrowse(group.getTodayBrowse() + count);
|
} else {
|
shareGoodsGroup.setTodayBrowse(count);
|
shareGoodsGroup.setBrowseTime(new Date());
|
}
|
|
listUpdate.add(shareGoodsGroup);
|
}
|
|
userShareGoodsGroupMapper.updateBatchSelective(listUpdate);
|
|
}
|
|
|
/**
|
* 更新订单记录数据
|
* @param uid
|
* @param auctionId
|
*/
|
@Override
|
public void updateOrderRecord (Long uid, TaoBaoGoodsBrief taoBaoGoodsBrief, int count)
|
throws UserShareGoodsRecordException{
|
|
if (uid == null) {
|
throw new UserShareGoodsRecordException(1, "用户ID不能为空");
|
}
|
|
if (taoBaoGoodsBrief == null) {
|
throw new UserShareGoodsRecordException(1, "商品不能为空");
|
}
|
|
UserShareGoodsGroup newestRecord = getNewestRecord(uid, taoBaoGoodsBrief.getAuctionId());
|
|
if (newestRecord != null) {
|
// 注意: 修改记录数据、但不可修改更新设置
|
UserShareGoodsGroup shareGoodsGroup = new UserShareGoodsGroup(newestRecord.getId());
|
shareGoodsGroup.setTotalOrder(newestRecord.getTotalOrder() + count);
|
|
// 单个商品预计金额
|
String rateStr = hongBaoManageService.get("hongbao_goods_proportion");
|
BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(taoBaoGoodsBrief, new BigDecimal(rateStr));
|
|
// 更新预计收益
|
BigDecimal resultMoney = MoneyBigDecimalUtil.mul(new BigDecimal(shareGoodsGroup.getTotalOrder()), money);
|
shareGoodsGroup.setTotalMoney(resultMoney);
|
|
updateByPrimaryKeySelective(shareGoodsGroup);
|
}
|
}
|
}
|