1个文件已删除
1 文件已重命名
10个文件已修改
4个文件已添加
| | |
| | | import com.ks.app.pojo.VO.PageEntity; |
| | | import com.ks.app.pojo.VO.Result; |
| | | import com.ks.app.util.ResultUtils; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderAccount; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; |
| | | import com.ks.lijin.service.LiJinProviderAccountService; |
| | | import org.apache.dubbo.config.annotation.Reference; |
| | | import org.springframework.stereotype.Controller; |
| | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping(value = "listByPage") |
| | | public Result listByPage(int page, int pageSize, LiJinProviderAccount t, HttpServletRequest request) { |
| | | public Result listByPage(int page, int pageSize, LiJinProviderTaoKeAccount t, HttpServletRequest request) { |
| | | try { |
| | | List<LiJinProviderAccount> list = liJinProviderAccountService.listByPage(page, pageSize, t); |
| | | List<LiJinProviderTaoKeAccount> list = liJinProviderAccountService.listByPage(page, pageSize, t); |
| | | long count = liJinProviderAccountService.count(t); |
| | | int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); |
| | | PageEntity pe = new PageEntity(page, pageSize, count, totalPage); |
| | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping(value = "add") |
| | | public Result add(LiJinProviderAccount t, HttpServletRequest request) { |
| | | public Result add(LiJinProviderTaoKeAccount t, HttpServletRequest request) { |
| | | try { |
| | | liJinProviderAccountService.insertSelective(t); |
| | | return ResultUtils.loadTrue(); |
| | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping(value = "modify") |
| | | public Result modify(LiJinProviderAccount t, HttpServletRequest request) { |
| | | public Result modify(LiJinProviderTaoKeAccount t, HttpServletRequest request) { |
| | | try { |
| | | liJinProviderAccountService.updateByPrimaryKeySelective(t); |
| | | return ResultUtils.loadTrue(); |
New file |
| | |
| | | package com.ks.lijin.exception; |
| | | |
| | | import com.ks.lib.common.exception.BaseException; |
| | | |
| | | /** |
| | | * 礼金账号异常 |
| | | */ |
| | | public class LiJinAccountException extends BaseException { |
| | | |
| | | // 淘礼金账户暂未创建 |
| | | public static final int CODE_TLJ_UN_PAID = 101; |
| | | // 官方账户余额不足 |
| | | public static final int CODE_TLJ_NO_MONEY = 102; |
| | | |
| | | |
| | | public LiJinAccountException(int code, String msg) { |
| | | super(code, msg); |
| | | } |
| | | |
| | | public LiJinAccountException() { |
| | | super(); |
| | | } |
| | | |
| | | |
| | | //屏蔽堆栈信息 |
| | | @Override |
| | | public synchronized Throwable fillInStackTrace() { |
| | | return this; |
| | | } |
| | | } |
File was renamed from facade-lijin/src/main/java/com/ks/lijin/pojo/DO/LiJinProviderAccount.java |
| | |
| | | import java.util.Date; |
| | | |
| | | @Table("tlj_provider_account") |
| | | public class LiJinProviderAccount implements Serializable { |
| | | public class LiJinProviderTaoKeAccount implements Serializable { |
| | | @Column(name = "ac_id") |
| | | private Long id; |
| | | |
| | |
| | | |
| | | @Column(name = "ac_app_secret") |
| | | private String appSecret; |
| | | |
| | | @Column(name = "ac_pid") |
| | | private String pid; |
| | | |
| | | @Column(name = "ac_max_money") |
| | | private BigDecimal maxMoney; |
| | |
| | | @Column(name = "ac_update_time") |
| | | private Date updateTime; |
| | | |
| | | public String getPid() { |
| | | return pid; |
| | | } |
| | | |
| | | public void setPid(String pid) { |
| | | this.pid = pid; |
| | | } |
| | | |
| | | public Long getId() { |
| | | return id; |
| | | } |
| | |
| | | package com.ks.lijin.service; |
| | | |
| | | |
| | | import com.ks.lijin.pojo.DO.LiJinProviderAccount; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderLink; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface LiJinProviderAccountService { |
| | | |
| | | public long count(LiJinProviderAccount t); |
| | | public long count(LiJinProviderTaoKeAccount t); |
| | | |
| | | |
| | | public List<LiJinProviderAccount> listByPage(int page, int pageSize, LiJinProviderAccount t); |
| | | public List<LiJinProviderTaoKeAccount> listByPage(int page, int pageSize, LiJinProviderTaoKeAccount t); |
| | | |
| | | /** |
| | | * 通过供应商ID 查询有效账号信息 |
| | | * @param providerId |
| | | * @return |
| | | */ |
| | | public List<LiJinProviderAccount> listByProviderId(Long providerId); |
| | | public List<LiJinProviderTaoKeAccount> listByProviderId(Long providerId); |
| | | |
| | | public void insertSelective(LiJinProviderAccount provider); |
| | | public void insertSelective(LiJinProviderTaoKeAccount provider); |
| | | |
| | | public void updateByPrimaryKeySelective(LiJinProviderAccount provider); |
| | | public void updateByPrimaryKeySelective(LiJinProviderTaoKeAccount provider); |
| | | |
| | | public void delete(Long id); |
| | | |
| | | public LiJinProviderAccount getByAppInfo(String appKey, String appSecret); |
| | | public LiJinProviderTaoKeAccount getByAppInfo(String appKey, String appSecret); |
| | | |
| | | } |
| | |
| | | package com.ks.lijin.utils.taobao; |
| | | |
| | | |
| | | import com.ks.lijin.exception.LiJinException; |
| | | import com.ks.lijin.exception.LiJinGoodsException; |
| | | import com.ks.lijin.exception.TaoBaoGoodsDownException; |
| | | import com.ks.lijin.exception.TaoKeApiException; |
| | | import com.ks.lijin.exception.*; |
| | | import com.ks.lijin.pojo.DTO.taobao.*; |
| | | import com.ks.lijin.pojo.PageEntity; |
| | | import com.taobao.api.internal.util.StringUtils; |
| | |
| | | // 淘礼金创建 |
| | | public static TaoLiJinDTO createTaoLiJin(Long auctionId, String name, BigDecimal perface, int totalNum, |
| | | Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime, TaoKeAppInfo app) |
| | | throws LiJinException, LiJinGoodsException { |
| | | throws LiJinAccountException, LiJinException, LiJinGoodsException { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.dg.vegas.tlj.create"); |
| | | map.put("adzone_id", app.getPid().split("_")[3]); |
| | |
| | | case "FAIL_BIZ_ITEM_FORBIDDEN": |
| | | throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "该商品不支持创建淘礼金红包"); |
| | | case "FAIL_BIZ_ACCOUNT_UN_PAID": |
| | | throw new LiJinException(LiJinException.CODE_TLJ_UN_PAID, "您的淘礼金账户暂未创建,请前往资金管理页面充值"); |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_UN_PAID, "您的淘礼金账户暂未创建,请前往资金管理页面充值"); |
| | | case "PRE_FREEZE_ASSET_ACCOUNT_ERROR": |
| | | throw new LiJinException(LiJinException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足"); |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足"); |
| | | case "ASSET_ACCOUNT_BALANCE_NOT_ENOUGH": |
| | | throw new LiJinException(LiJinException.CODE_TLJ_NO_MONEY, "账户预算不足"); |
| | | throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "账户预算不足"); |
| | | case "FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR": |
| | | throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_CREATED_NUM_FULL, "今日该商品淘礼金创建数已超上限,请您明日再试"); |
| | | default: |
| | |
| | | package java; |
| | | |
| | | import com.ks.lijin.pojo.DO.LiJinProvider; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.yeshi.utils.generater.mybatis.MyBatisMapperUtil; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; |
| | | import org.junit.Test; |
| | | import org.yeshi.utils.generater.mybatis.ColumnParseUtil; |
| | | |
| | | public class MyBatisTest { |
| | | |
| | | |
| | | public static void main(String[] args){ |
| | | ColumnParseUtil.parseColumn(LiJinProviderTaoKeAccount.class,"D:\\项目\\返利券\\特价\\tejia\\service-lijin\\src\\main\\resources\\mapper\\LiJinProviderAccountMapper.xml"); |
| | | } |
| | | |
| | | @Test |
| | | public void test(){ |
| | | MyBatisMapperUtil.createMapper(LiJinProvider.class); |
| | | ColumnParseUtil.parseColumn(LiJinProviderTaoKeAccount.class,"D:\\项目\\返利券\\特价\\tejia\\service-lijin\\src\\main\\resources\\mapper\\LiJinProviderAccountMapper.xml"); |
| | | // MyBatisMapperUtil.createMapper(LiJinProvider.class); |
| | | } |
| | | } |
| | | |
| | |
| | | package com.ks.lijin.mapper; |
| | | |
| | | import com.ks.lib.common.dao.BaseMapper; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderAccount; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderLink; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; |
| | | import com.ks.lijin.query.ProviderAccountQuery; |
| | | import com.ks.lijin.query.ProviderLinkQuery; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface LiJinProviderAccountMapper extends BaseMapper<LiJinProviderAccount> { |
| | | public interface LiJinProviderAccountMapper extends BaseMapper<LiJinProviderTaoKeAccount> { |
| | | |
| | | |
| | | List<LiJinProviderAccount> listByPage(@Param("query") ProviderAccountQuery query); |
| | | List<LiJinProviderTaoKeAccount> listByPage(@Param("query") ProviderAccountQuery query); |
| | | |
| | | long count(@Param("query") ProviderAccountQuery query); |
| | | |
| | | LiJinProviderTaoKeAccount selectByPrimaryKeyForUpdate(Long id); |
| | | |
| | | } |
New file |
| | |
| | | package com.ks.lijin.pojo.DTO; |
| | | |
| | | import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; |
| | | import com.ks.lijin.pojo.DTO.taobao.TaoLiJinDTO; |
| | | |
| | | public class TaoLijinCreateResultDTO { |
| | | private LiJinProviderTaoKeAccount account; |
| | | private TaoLiJinDTO taoLiJin; |
| | | |
| | | public TaoLijinCreateResultDTO(LiJinProviderTaoKeAccount account, TaoLiJinDTO taoLiJin) { |
| | | this.account = account; |
| | | this.taoLiJin = taoLiJin; |
| | | } |
| | | |
| | | public LiJinProviderTaoKeAccount getAccount() { |
| | | return account; |
| | | } |
| | | |
| | | public void setAccount(LiJinProviderTaoKeAccount account) { |
| | | this.account = account; |
| | | } |
| | | |
| | | public TaoLiJinDTO getTaoLiJin() { |
| | | return taoLiJin; |
| | | } |
| | | |
| | | public void setTaoLiJin(TaoLiJinDTO taoLiJin) { |
| | | this.taoLiJin = taoLiJin; |
| | | } |
| | | } |
New file |
| | |
| | | package com.ks.lijin.service.manager; |
| | | |
| | | import com.ks.lijin.mapper.LiJinProviderAccountMapper; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.yeshi.utils.TimeUtil; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.Date; |
| | | |
| | | @Component |
| | | public class LiJinProviderTaoKeAccountManager { |
| | | |
| | | @Resource |
| | | private LiJinProviderAccountMapper liJinProviderAccountMapper; |
| | | |
| | | @Resource |
| | | private RedisTemplate redisTemplate; |
| | | |
| | | |
| | | /** |
| | | * 礼金创建成功 |
| | | * |
| | | * @param accountId |
| | | * @param auctionId |
| | | * @param money |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void createLijinSuccess(Long accountId, Long auctionId, BigDecimal money, Date createTime) { |
| | | String day = TimeUtil.getGernalTime(createTime.getTime(), "yyyyMMdd"); |
| | | String goodsKeyPrefix = String.format("lijingoodsnum-%s-%s-", day, accountId); |
| | | String goodsKey = goodsKeyPrefix + auctionId; |
| | | String accountMoneyKey = String.format("lijinaccountmoney-%s-%s", day, accountId); |
| | | //保存账号当日的商品数量消耗 |
| | | redisTemplate.opsForValue().increment(goodsKey, 1); |
| | | //保存当日账号的资金消耗 |
| | | redisTemplate.opsForValue().increment(accountMoneyKey, money.multiply(new BigDecimal(100)).intValue()); |
| | | |
| | | //获取账号当日的商品数量 |
| | | int goodsNum = redisTemplate.keys(goodsKeyPrefix + "*").size(); |
| | | //获取账号当日的资金消耗 |
| | | Long todayMoney = Long.parseLong(redisTemplate.opsForValue().get(accountMoneyKey) + ""); |
| | | |
| | | //同步到数据库 |
| | | |
| | | LiJinProviderTaoKeAccount account = liJinProviderAccountMapper.selectByPrimaryKeyForUpdate(accountId); |
| | | if (account != null) { |
| | | LiJinProviderTaoKeAccount update = new LiJinProviderTaoKeAccount(); |
| | | update.setTodayConsumeMoney(new BigDecimal(todayMoney).divide(new BigDecimal(100), 2, RoundingMode.FLOOR)); |
| | | update.setTodayConsumeNumber(goodsNum); |
| | | update.setUpdateTime(new Date()); |
| | | liJinProviderAccountMapper.updateByPrimaryKeySelective(update); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | 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 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.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; |
| | | |
| | |
| | | package com.ks.lijin.service.remote; |
| | | |
| | | import com.ks.lijin.mapper.LiJinProviderAccountMapper; |
| | | import com.ks.lijin.mapper.LiJinProviderLinkMapper; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderAccount; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderLink; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; |
| | | import com.ks.lijin.query.ProviderAccountQuery; |
| | | import com.ks.lijin.query.ProviderLinkQuery; |
| | | import com.ks.lijin.service.LiJinProviderAccountService; |
| | | import com.ks.lijin.service.LiJinProviderLinkService; |
| | | import org.apache.dubbo.config.annotation.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Service(version = "1.0") |
| | |
| | | |
| | | |
| | | @Override |
| | | public long count(LiJinProviderAccount obj) { |
| | | public long count(LiJinProviderTaoKeAccount obj) { |
| | | ProviderAccountQuery query = new ProviderAccountQuery(); |
| | | query.id = obj.getId(); |
| | | query.state = obj.getState(); |
| | |
| | | |
| | | |
| | | @Override |
| | | public List<LiJinProviderAccount> listByPage(int page, int pageSize, LiJinProviderAccount obj) { |
| | | public List<LiJinProviderTaoKeAccount> listByPage(int page, int pageSize, LiJinProviderTaoKeAccount obj) { |
| | | ProviderAccountQuery query = new ProviderAccountQuery(); |
| | | query.id = obj.getId(); |
| | | query.state = obj.getState(); |
| | |
| | | |
| | | |
| | | @Override |
| | | public List<LiJinProviderAccount> listByProviderId(Long providerId) { |
| | | public List<LiJinProviderTaoKeAccount> listByProviderId(Long providerId) { |
| | | ProviderAccountQuery query = new ProviderAccountQuery(); |
| | | query.state =1; |
| | | query.providerId = providerId; |
| | |
| | | |
| | | |
| | | @Override |
| | | public void insertSelective(LiJinProviderAccount t){ |
| | | public void insertSelective(LiJinProviderTaoKeAccount t){ |
| | | liJinProviderAccountMapper.insertSelective(t); |
| | | } |
| | | |
| | | @Override |
| | | public void updateByPrimaryKeySelective(LiJinProviderAccount t){ |
| | | public void updateByPrimaryKeySelective(LiJinProviderTaoKeAccount t){ |
| | | liJinProviderAccountMapper.updateByPrimaryKeySelective(t); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | |
| | | public LiJinProviderAccount getByAppInfo(String appKey, String appSecret){ |
| | | LiJinProviderAccount obj = new LiJinProviderAccount(); |
| | | public LiJinProviderTaoKeAccount getByAppInfo(String appKey, String appSecret){ |
| | | LiJinProviderTaoKeAccount obj = new LiJinProviderTaoKeAccount(); |
| | | obj.setAppKey(appKey); |
| | | obj.setAppSecret(appSecret); |
| | | obj.setState(1); |
| | | List<LiJinProviderAccount> list = listByPage(0, 100, obj); |
| | | List<LiJinProviderTaoKeAccount> list = listByPage(0, 100, obj); |
| | | if (list ==null && list.size() == 0) { |
| | | return null; |
| | | } |
| | |
| | | import com.ks.lijin.exception.*; |
| | | 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.LiJinProviderTaoKeAccount; |
| | | import com.ks.lijin.pojo.DO.LiJinProviderNotice; |
| | | import com.ks.lijin.pojo.DTO.LiJinCreateParam; |
| | | import com.ks.lijin.pojo.DTO.MoneyInfo; |
| | | import com.ks.lijin.pojo.DTO.TaoLijinCreateResultDTO; |
| | | 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.service.LiJinProviderAccountService; |
| | | import com.ks.lijin.service.LiJinProviderNoticeService; |
| | | import com.ks.lijin.service.LijinCreateService; |
| | | import com.ks.lijin.service.manager.LiJinProviderTaoKeAccountManager; |
| | | import com.ks.lijin.util.Constant; |
| | | import com.ks.lijin.utils.taobao.TaoBaoUtil; |
| | | import com.ks.lijin.utils.taobao.TaoKeApiUtil; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | |
| | | @Resource |
| | | private LiJinExpendRecordService liJinExpendRecordService; |
| | | |
| | | |
| | | @Resource |
| | | private LiJinProviderTaoKeAccountManager liJinProviderTaoKeAccountManager; |
| | | |
| | | @Override |
| | | public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) { |
| | |
| | | BigDecimal lijinAmount = getTBLijinAmount(goods, vipRank); |
| | | |
| | | // 执行创建淘礼金 |
| | | LiJinCreateParam params = getLiJinCreateParam(); |
| | | LiJinCreateParam params = getLiJinCreateBaseParam(); |
| | | |
| | | |
| | | TaoLiJinDTO taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params); |
| | | TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(goodsId, lijinAmount, params); |
| | | if (taoLiJinDTO == null) { |
| | | throw new LiJinException(1, "淘宝API推广红包创建失败"); |
| | | } |
| | | |
| | | //添加账号的 |
| | | return addCreateSuccessRecord(uid, goodsId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 添加创建记录 |
| | | * |
| | | * @param uid |
| | | * @param goodsId |
| | | * @param lijinAmount |
| | | * @param title |
| | | * @param num |
| | | * @param taoLiJinDTO |
| | | */ |
| | | private LiJinExpendRecord addCreateSuccessRecord(String uid, Long goodsId, BigDecimal lijinAmount, String title, int num, TaoLijinCreateResultDTO taoLiJinDTO) { |
| | | Date now = new Date(); |
| | | // 保存记录 |
| | | LiJinExpendRecord record = new LiJinExpendRecord(); |
| | | record.setUid(uid); |
| | | record.setGoodsId(goodsId + ""); |
| | | record.setTitle(params.getTitle()); |
| | | record.setNum(params.getNum()); |
| | | record.setTitle(title); |
| | | record.setNum(num); |
| | | record.setMoney(lijinAmount); |
| | | record.setRightsId(taoLiJinDTO.getRightsId()); |
| | | record.setSendUrl(taoLiJinDTO.getSendUrl()); |
| | | record.setAccountId(taoLiJinDTO.getAccount().getId()); |
| | | record.setRightsId(taoLiJinDTO.getTaoLiJin().getRightsId()); |
| | | record.setSendUrl(taoLiJinDTO.getTaoLiJin().getSendUrl()); |
| | | record.setCreateTime(new Date()); |
| | | liJinExpendRecordMapper.insertSelective(record); |
| | | //添加 |
| | | liJinProviderTaoKeAccountManager.createLijinSuccess(taoLiJinDTO.getAccount().getId(), goodsId, lijinAmount.multiply(new BigDecimal(num)), now); |
| | | return record; |
| | | } |
| | | |
| | |
| | | /** |
| | | * 调用账号以及淘宝API |
| | | * |
| | | * @param uid |
| | | * @param goodsId |
| | | * @param lijinAmount |
| | | * @param params |
| | |
| | | * @throws LiJinGoodsException |
| | | * @throws LiJinException |
| | | */ |
| | | private TaoLiJinDTO executeTaoLiJinAPI(String uid, Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException { |
| | | private TaoLijinCreateResultDTO executeTaoLiJin(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException { |
| | | // 查询供应商账号信息 |
| | | List<LiJinProviderAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID); |
| | | List<LiJinProviderTaoKeAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID); |
| | | if (listAccount == null || listAccount.size() == 0) { |
| | | throw new LiJinException(1, "供应商账号不存在"); |
| | | throw new LiJinException(1, "没有可用的供应商账号"); |
| | | } |
| | | |
| | | TaoLiJinDTO taoLiJinDTO = null; |
| | | // 遍历账号 用可使用账号 |
| | | for (LiJinProviderAccount account : listAccount) { |
| | | for (LiJinProviderTaoKeAccount account : listAccount) { |
| | | params.setAppkey(account.getAppKey()); |
| | | params.setAppsecret(account.getAppSecret()); |
| | | params.setPid(account.getPid()); |
| | | try { |
| | | taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params); |
| | | if (taoLiJinDTO != null) { |
| | | break; |
| | | } |
| | | } catch (LiJinException e) { |
| | | //创建礼金 |
| | | return new TaoLijinCreateResultDTO(account, executeTaoLiJinAPI(goodsId, lijinAmount, params)); |
| | | } catch (LiJinAccountException e) {// 账号问题 |
| | | // 通知相应供应商 TODO |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | |
| | | LiJinProviderNotice notice = new LiJinProviderNotice(); |
| | | notice.setRead(false); |
| | | notice.setProviderId(account.getProviderId()); |
| | | if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) { |
| | | if (e.getCode() == LiJinAccountException.CODE_TLJ_NO_MONEY) { |
| | | // 官方玩法钱包余额不足 |
| | | notice.setTitle("玩法钱包余额不足"); |
| | | notice.setContent("账号:" + account.getAccountName() + "官方玩法钱包余额不足"); |
| | | notice.setType(NoticeTypeEnum.noMoney.name()); |
| | | liJinProviderNoticeService.save(notice); |
| | | } else if (e.getCode() == LiJinException.CODE_TLJ_UN_PAID) { |
| | | } else if (e.getCode() == LiJinAccountException.CODE_TLJ_UN_PAID) { |
| | | // 未创建账户 |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | throw new LiJinException(1, "没有可用的供应商账号"); |
| | | } |
| | | |
| | | // 创建淘礼金红包 |
| | | |
| | | private TaoLiJinDTO executeTaoLiJinAPI(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinException, LiJinGoodsException, LiJinAccountException { |
| | | return TaoKeApiUtil.createTaoLiJin(goodsId, params.getTitle(), lijinAmount, |
| | | params.getNum(), params.getSendStartTime(), params.getSendEndTime(), |
| | | params.getUseStartTime(), params.getUseEndTime(), new TaoKeAppInfo(params.getAppkey(), params.getAppsecret(), params.getPid())); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取商品可创建的礼金金额 |
| | |
| | | * |
| | | * @return |
| | | */ |
| | | private LiJinCreateParam getLiJinCreateParam() { |
| | | private LiJinCreateParam getLiJinCreateBaseParam() { |
| | | Date date = new Date(); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); |
| | | SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | |
| | | <mapper namespace="com.ks.lijin.mapper.LiJinProviderAccountMapper"> |
| | | <resultMap id="BaseResultMap" type="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount"> |
| | | <id column="ac_id" property="id" jdbcType="BIGINT"/> |
| | | <result column="ac_provider_id" property="providerId" jdbcType="BIGINT"/> |
| | | <result column="ac_account_name" property="accountName" jdbcType="VARCHAR"/> |
| | | <result column="ac_app_key" property="appKey" jdbcType="VARCHAR"/> |
| | | <result column="ac_app_secret" property="appSecret" jdbcType="VARCHAR"/> |
| | | <result column="ac_pid" property="pid" jdbcType="VARCHAR"/> |
| | | <result column="ac_max_money" property="maxMoney" jdbcType="DECIMAL"/> |
| | | <result column="ac_max_number" property="maxNumber" jdbcType="INTEGER"/> |
| | | <result column="ac_today_consume_money" property="todayConsumeMoney" jdbcType="DECIMAL"/> |
| | | <result column="ac_today_consume_number" property="todayConsumeNumber" jdbcType="INTEGER"/> |
| | | <result column="ac_state" property="state" jdbcType="INTEGER"/> |
| | | <result column="ac_creator_id" property="creatorId" jdbcType="BIGINT"/> |
| | | <result column="ac_create_time" property="createTime" jdbcType="TIMESTAMP"/> |
| | | <result column="ac_updator_id" property="updatorId" jdbcType="BIGINT"/> |
| | | <result column="ac_update_time" property="updateTime" jdbcType="TIMESTAMP"/> |
| | | </resultMap> |
| | | <sql id="Base_Column_List">ac_id,ac_provider_id,ac_account_name,ac_app_key,ac_app_secret,ac_pid,ac_max_money,ac_max_number,ac_today_consume_money,ac_today_consume_number,ac_state,ac_creator_id,ac_create_time,ac_updator_id,ac_update_time</sql> |
| | | <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">select |
| | | <include refid="Base_Column_List"/>from tlj_provider_account where ac_id = #{id,jdbcType=BIGINT} |
| | | </select> |
| | | |
| | | |
| | | <select id="selectByPrimaryKeyForUpdate" resultMap="BaseResultMap" parameterType="java.lang.Long">select |
| | | <include refid="Base_Column_List"/>from tlj_provider_account where ac_id = #{0} for update |
| | | </select> |
| | | |
| | | |
| | | <delete id="deleteByPrimaryKey" |
| | | parameterType="java.lang.Long">delete from tlj_provider_account where ac_id = #{id,jdbcType=BIGINT}</delete> |
| | | <insert id="insert" parameterType="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount" useGeneratedKeys="true" |
| | | keyProperty="id">insert into tlj_provider_account (ac_id, ac_provider_id, ac_account_name, ac_app_key, ac_app_secret,ac_pid, ac_max_money, ac_max_number, ac_today_consume_money, ac_today_consume_number, ac_state, ac_creator_id, ac_create_time, ac_updator_id, ac_update_time)values (#{id,jdbcType=BIGINT}, #{providerId,jdbcType=BIGINT}, #{accountName,jdbcType=VARCHAR}, #{appKey,jdbcType=VARCHAR}, #{appSecret,jdbcType=VARCHAR}, #{pid,jdbcType=VARCHAR}, #{maxMoney,jdbcType=DECIMAL}, #{maxNumber,jdbcType=INTEGER}, #{todayConsumeMoney,jdbcType=DECIMAL}, #{todayConsumeNumber,jdbcType=INTEGER}, #{state,jdbcType=INTEGER}, #{creatorId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updatorId,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP})</insert> |
| | | <insert id="insertSelective" parameterType="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount" useGeneratedKeys="true" |
| | | keyProperty="id">insert into tlj_provider_account |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="id != null">ac_id,</if> |
| | | <if test="providerId != null">ac_provider_id,</if> |
| | | <if test="accountName != null">ac_account_name,</if> |
| | | <if test="appKey != null">ac_app_key,</if> |
| | | <if test="appSecret != null">ac_app_secret,</if> |
| | | <if test="pid != null">ac_pid,</if> |
| | | <if test="maxMoney != null">ac_max_money,</if> |
| | | <if test="maxNumber != null">ac_max_number,</if> |
| | | <if test="todayConsumeMoney != null">ac_today_consume_money,</if> |
| | | <if test="todayConsumeNumber != null">ac_today_consume_number,</if> |
| | | <if test="state != null">ac_state,</if> |
| | | <if test="creatorId != null">ac_creator_id,</if> |
| | | <if test="createTime != null">ac_create_time,</if> |
| | | <if test="updatorId != null">ac_updator_id,</if> |
| | | <if test="updateTime != null">ac_update_time,</if> |
| | | </trim> |
| | | values |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="id != null">#{id,jdbcType=BIGINT},</if> |
| | | <if test="providerId != null">#{providerId,jdbcType=BIGINT},</if> |
| | | <if test="accountName != null">#{accountName,jdbcType=VARCHAR},</if> |
| | | <if test="appKey != null">#{appKey,jdbcType=VARCHAR},</if> |
| | | <if test="appSecret != null">#{appSecret,jdbcType=VARCHAR},</if> |
| | | <if test="pid != null">#{pid,jdbcType=VARCHAR},</if> |
| | | <if test="maxMoney != null">#{maxMoney,jdbcType=DECIMAL},</if> |
| | | <if test="maxNumber != null">#{maxNumber,jdbcType=INTEGER},</if> |
| | | <if test="todayConsumeMoney != null">#{todayConsumeMoney,jdbcType=DECIMAL},</if> |
| | | <if test="todayConsumeNumber != null">#{todayConsumeNumber,jdbcType=INTEGER},</if> |
| | | <if test="state != null">#{state,jdbcType=INTEGER},</if> |
| | | <if test="creatorId != null">#{creatorId,jdbcType=BIGINT},</if> |
| | | <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if> |
| | | <if test="updatorId != null">#{updatorId,jdbcType=BIGINT},</if> |
| | | <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if> |
| | | </trim> |
| | | </insert> |
| | | <update id="updateByPrimaryKey" |
| | | parameterType="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount">update tlj_provider_account set ac_provider_id = #{providerId,jdbcType=BIGINT},ac_account_name = #{accountName,jdbcType=VARCHAR},ac_app_key = #{appKey,jdbcType=VARCHAR},ac_app_secret = #{appSecret,jdbcType=VARCHAR},ac_pid = #{pid,jdbcType=VARCHAR},ac_max_money = #{maxMoney,jdbcType=DECIMAL},ac_max_number = #{maxNumber,jdbcType=INTEGER},ac_today_consume_money = #{todayConsumeMoney,jdbcType=DECIMAL},ac_today_consume_number = #{todayConsumeNumber,jdbcType=INTEGER},ac_state = #{state,jdbcType=INTEGER},ac_creator_id = #{creatorId,jdbcType=BIGINT},ac_create_time = #{createTime,jdbcType=TIMESTAMP},ac_updator_id = #{updatorId,jdbcType=BIGINT},ac_update_time = #{updateTime,jdbcType=TIMESTAMP}where ac_id = #{id,jdbcType=BIGINT}</update> |
| | | <update id="updateByPrimaryKeySelective" parameterType="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount">update |
| | | tlj_provider_account |
| | | <set> |
| | | <if test="providerId != null">ac_provider_id=#{providerId,jdbcType=BIGINT},</if> |
| | | <if test="accountName != null">ac_account_name=#{accountName,jdbcType=VARCHAR},</if> |
| | | <if test="appKey != null">ac_app_key=#{appKey,jdbcType=VARCHAR},</if> |
| | | <if test="appSecret != null">ac_app_secret=#{appSecret,jdbcType=VARCHAR},</if> |
| | | <if test="pid != null">ac_pid=#{pid,jdbcType=VARCHAR},</if> |
| | | <if test="maxMoney != null">ac_max_money=#{maxMoney,jdbcType=DECIMAL},</if> |
| | | <if test="maxNumber != null">ac_max_number=#{maxNumber,jdbcType=INTEGER},</if> |
| | | <if test="todayConsumeMoney != null">ac_today_consume_money=#{todayConsumeMoney,jdbcType=DECIMAL},</if> |
| | | <if test="todayConsumeNumber != null">ac_today_consume_number=#{todayConsumeNumber,jdbcType=INTEGER},</if> |
| | | <if test="state != null">ac_state=#{state,jdbcType=INTEGER},</if> |
| | | <if test="creatorId != null">ac_creator_id=#{creatorId,jdbcType=BIGINT},</if> |
| | | <if test="createTime != null">ac_create_time=#{createTime,jdbcType=TIMESTAMP},</if> |
| | | <if test="updatorId != null">ac_updator_id=#{updatorId,jdbcType=BIGINT},</if> |
| | | <if test="updateTime != null">ac_update_time=#{updateTime,jdbcType=TIMESTAMP},</if> |
| | | </set> |
| | | where ac_id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | |
| | | |
| | | <!-- 非模板 --> |
| | | <sql id="listWhere"> |
| | | <if test="query.id!=null">and ac_id=#{query.id}</if> |
| | | <if test="query.name!=null">and ac_account_name=#{query.name}</if> |
| | | <if test="query.providerId!=null">and ac_provider_id=#{query.providerId}</if> |
| | | <if test="query.state!=null">and ac_state=#{query.state}</if> |
| | | <if test="query.appKey!=null">and ac_app_key=#{query.appKey}</if> |
| | | <if test="query.appSecret!=null">and ac_app_secret=#{query.appSecret}</if> |
| | | </sql> |
| | | |
| | | |
| | | <select id="listByPage" resultMap="BaseResultMap"> |
| | | select |
| | | <include refid="Base_Column_List"/> |
| | | from tlj_provider_account |
| | | where 1=1 |
| | | <include refid="listWhere"/> |
| | | limit #{query.start},#{query.count} |
| | | </select> |
| | | |
| | | <select id="count" resultType="java.lang.Long"> |
| | | select count(*) from tlj_provider_account |
| | | where 1=1 |
| | | <include refid="listWhere"/> |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | daoQuery.start = (page - 1) * pageSize; |
| | | daoQuery.count = pageSize; |
| | | List<VipCenterRecord> list = vipCenterRecordMapper.list(daoQuery); |
| | | if (list == null || list.size() == 0) |
| | | if (list == null || list.size() == 0) { |
| | | return new ArrayList<>(); |
| | | |
| | | } |
| | | List<Long> orderIds = new ArrayList<>(); |
| | | for (VipCenterRecord record : list) { |
| | | orderIds.add(record.getOrderId()); |
| | |
| | | |
| | | <select id="count" resultType="java.lang.Long"> |
| | | select |
| | | <include refid="Base_Column_List"/>from vip_center_record where 1=1 |
| | | count(*) from vip_center_record where 1=1 |
| | | |
| | | <include refid="listWhere"></include> |
| | | </select> |