| | |
| | | package com.ks.lijin.service.remote; |
| | | |
| | | import com.ks.lijin.exception.LiJinException; |
| | | import com.ks.lijin.exception.LiJinExpendRecordException; |
| | | import com.ks.lijin.exception.TaoKeApiException; |
| | | import org.apache.dubbo.config.annotation.Service; |
| | | import com.ks.lijin.mapper.LiJinExpendRecordMapper; |
| | | import com.ks.lijin.pojo.DO.LiJinExpendRecord; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderAccount; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderNotice; |
| | | import com.ks.lijin.pojo.DTO.LiJinCreateParam; |
| | | import com.ks.lijin.pojo.DTO.taobao.TaoBaoGoodsBrief; |
| | | import com.ks.lijin.pojo.DTO.taobao.TaoKeAppInfo; |
| | | import com.ks.lijin.pojo.DTO.taobao.TaoLiJinDTO; |
| | | import com.ks.lijin.pojo.Enums.NoticeTypeEnum; |
| | | import com.ks.lijin.query.ExpendRecordQuery; |
| | | import com.ks.lijin.service.LiJinExpendRecordService; |
| | | import com.ks.lijin.service.LiJinProviderAccountService; |
| | | import com.ks.lijin.service.LiJinProviderNoticeService; |
| | | import com.ks.lijin.utils.taobao.TaoKeApiUtil; |
| | | import org.apache.dubbo.config.annotation.Service; |
| | | import org.springframework.core.task.TaskExecutor; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | @Override |
| | | public long count(LiJinExpendRecord obj) { |
| | | ExpendRecordQuery query = new ExpendRecordQuery(); |
| | | // query.appId = appId; |
| | | // query.uid = uid; |
| | | query.uid = obj.getUid(); |
| | | query.accountId = obj.getAccountId(); |
| | | query.goodsId = obj.getGoodsId(); |
| | | query.money = obj.getMoney(); |
| | | query.title = obj.getTitle(); |
| | | query.rightsId = obj.getRightsId(); |
| | | return liJinExpendRecordMapper.count(query); |
| | | } |
| | | |
| | |
| | | @Override |
| | | public List<LiJinExpendRecord> listByPage(int page, int pageSize, LiJinExpendRecord obj) { |
| | | ExpendRecordQuery query = new ExpendRecordQuery(); |
| | | // query.appId = appId; |
| | | // query.uid = uid; |
| | | // query.drawStateList = Arrays.asList(new Integer[]{LuckyActivityJoinRecord.DRAW_STATE_UNOPEN}); |
| | | query.uid = obj.getUid(); |
| | | query.accountId = obj.getAccountId(); |
| | | query.goodsId = obj.getGoodsId(); |
| | | query.money = obj.getMoney(); |
| | | query.title = obj.getTitle(); |
| | | query.rightsId = obj.getRightsId(); |
| | | query.start = (page - 1) * pageSize; |
| | | query.count = pageSize; |
| | | return liJinExpendRecordMapper.listByPage(query); |
| | |
| | | liJinExpendRecordMapper.deleteByPrimaryKey(id); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public LiJinExpendRecord createLiJin(String uid, BigDecimal money, TaoBaoGoodsBrief goods) |
| | | throws LiJinExpendRecordException { |
| | | |
| | | // TODO 验证次数 |
| | | int expendNum = countTodayNumByExpend(uid); |
| | | // TODO 验证金额 |
| | | BigDecimal bigDecimal = countTodayMoneyByExpend(uid); |
| | | |
| | | |
| | | Date date = new Date(); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); |
| | | SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | String date_str = format.format(date); |
| | | String sendEndTime_str = date_str + " 22:00:00"; |
| | | String useEndTime_str = date_str + " 23:59:59"; |
| | | |
| | | /* 创建淘礼金 */ |
| | | String name = "自购淘礼金红包"; |
| | | // 发放开始时间 |
| | | Date sendStartTime = date; |
| | | // 发放截止时间 - 分享当日22:00 |
| | | Date sendEndTime = null; |
| | | // 使用结束日期 - 分享当日 23:59 |
| | | Date useEndTime = null; |
| | | |
| | | try { |
| | | sendEndTime = formatStr.parse(sendEndTime_str); |
| | | useEndTime = formatStr.parse(useEndTime_str); |
| | | } catch (ParseException e2) { |
| | | e2.printStackTrace(); |
| | | } |
| | | |
| | | LiJinCreateParam params = new LiJinCreateParam(); |
| | | params.setTitle("自购淘礼金红包"); |
| | | params.setUid(uid + ""); |
| | | params.setGoodsId(goods.getAuctionId()); |
| | | params.setUseEndTime(useEndTime); |
| | | params.setSendStartTime(sendStartTime); |
| | | params.setSendEndTime(sendEndTime); |
| | | params.setNum(1); |
| | | params.setMoney(money); |
| | | |
| | | // params.setPid(); // pid缺少 TODO |
| | | // params.setAppkey(); |
| | | // params.setAppsecret(); |
| | | |
| | | return createTaoLiJin(params); |
| | | } |
| | | |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public LiJinExpendRecord createTaoLiJin(LiJinCreateParam params) throws LiJinExpendRecordException { |
| | | String appkey =params.getAppkey(); |
| | | String appsecret = params.getAppsecret(); |
| | | |
| | | // 创建淘礼金红包 |
| | | TaoLiJinDTO taoLiJinDTO = null; |
| | | try { |
| | | taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(params.getGoodsId(), params.getTitle(), params.getMoney(), |
| | | params.getNum(), params.getSendStartTime(), params.getSendEndTime(), |
| | | params.getUseStartTime(), params.getUseEndTime(), new TaoKeAppInfo(appkey, appsecret, params.getPid())); |
| | | } catch (LiJinException e) { |
| | | // 通知相应供应商 TODO |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | LiJinProviderAccount account = liJinProviderAccountService.getByAppInfo(appkey, appsecret); |
| | | if (account == null) { |
| | | return; |
| | | } |
| | | |
| | | LiJinProviderNotice notice = new LiJinProviderNotice(); |
| | | notice.setRead(false); |
| | | notice.setProviderId(account.getProviderId()); |
| | | |
| | | if (e.getCode() == LiJinException.CODE_TLJ_FORBIDDEN) { |
| | | // 该商品不支持创建淘礼金红包 |
| | | } else if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) { |
| | | // 官方玩法钱包余额不足 |
| | | notice.setTitle("玩法钱包余额不足"); |
| | | notice.setContent("账号:"+ appkey +"官方玩法钱包余额不足"); |
| | | notice.setType(NoticeTypeEnum.noMoney.name()); |
| | | liJinProviderNoticeService.save(notice); |
| | | } else if (e.getCode() == LiJinException.CODE_TLJ_UN_PAID) { |
| | | // 未创建账户 |
| | | } |
| | | } |
| | | }); |
| | | } catch (TaoKeApiException e1) { |
| | | // TODO |
| | | } |
| | | |
| | | if (taoLiJinDTO == null) { |
| | | throw new LiJinExpendRecordException(101, "淘宝API推广红包创建失败"); |
| | | } |
| | | |
| | | // 保存记录 |
| | | LiJinExpendRecord record = new LiJinExpendRecord(); |
| | | record.setUid(params.getUid()); |
| | | record.setGoodsId(params.getGoodsId() + ""); |
| | | record.setTitle(params.getTitle()); |
| | | record.setNum(params.getNum()); |
| | | record.setMoney(params.getMoney()); |
| | | record.setRightsId(taoLiJinDTO.getRightsId()); |
| | | record.setSendUrl(taoLiJinDTO.getSendUrl()); |
| | | record.setCreateTime(new Date()); |
| | | liJinExpendRecordMapper.insertSelective(record); |
| | | |
| | | return record; |
| | | } |
| | | |
| | | @Override |
| | | public int countTodayNumByExpend(String uid) { |