| | |
| | | package com.yeshi.fanli.service.impl.push;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.util.Arrays;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | | import javax.transaction.Transactional;
|
| | |
|
| | | import org.springframework.stereotype.Service;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.push.PushCouponMapper;
|
| | | import com.yeshi.fanli.entity.push.PushCoupon;
|
| | | import com.yeshi.fanli.exception.PushException;
|
| | | import com.yeshi.fanli.exception.push.PushCouponException;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.push.PushCouponRecordService;
|
| | | import com.yeshi.fanli.service.inter.push.PushCouponService;
|
| | | import com.yeshi.fanli.service.inter.push.PushService;
|
| | |
|
| | | @Service
|
| | | public class PushCouponServiceImpl implements PushCouponService {
|
| | |
|
| | | @Resource
|
| | | private PushService pushService;
|
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private PushCouponMapper pushCouponMapper;
|
| | | |
| | | @Resource
|
| | | private PushCouponRecordService pushCouponRecordService;
|
| | | |
| | | @Override
|
| | | public int deleteByPrimaryKey(Long id) {
|
| | | return pushCouponMapper.deleteByPrimaryKey(id);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public int insert(PushCoupon record) {
|
| | | return pushCouponMapper.insert(record);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public int insertSelective(PushCoupon record) {
|
| | | return pushCouponMapper.insertSelective(record);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public PushCoupon selectByPrimaryKey(Long id) {
|
| | | return pushCouponMapper.selectByPrimaryKey(id);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public int updateByPrimaryKeySelective(PushCoupon record) {
|
| | | return pushCouponMapper.updateByPrimaryKeySelective(record);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public int updateByPrimaryKey(PushCoupon record) {
|
| | | return pushCouponMapper.updateByPrimaryKey(record);
|
| | | }
|
| | |
|
| | |
|
| | | @Override
|
| | | public List<PushCoupon> listQuery(long start, int count, String key, Integer state) {
|
| | | return pushCouponMapper.listQuery(start, count, key, state);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public long countQuery(String key, Integer state) {
|
| | | return pushCouponMapper.countQuery(key, state);
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public void save(PushCoupon record) throws PushCouponException {
|
| | | if (record == null) {
|
| | | throw new PushCouponException(1, "参数不正确");
|
| | | }
|
| | |
|
| | | String title = record.getTitle();
|
| | | String content = record.getContent();
|
| | | if (title == null || title.trim().length() == 0 || content == null || content.trim().length() == 0) {
|
| | | throw new PushCouponException(1, "标题或内容不能为空");
|
| | | }
|
| | |
|
| | | Date startTime = record.getStartTime();
|
| | | Date endTime = record.getEndTime();
|
| | | if (startTime == null || endTime == null) {
|
| | | throw new PushCouponException(1, "有效期时间不能为空");
|
| | | }
|
| | |
|
| | | Integer amount = record.getAmount();
|
| | | if (amount == null) {
|
| | | throw new PushCouponException(1, "券数量不能为空");
|
| | | } else if (amount < 1 || amount > 5) {
|
| | | throw new PushCouponException(1, "券数量范围是 1~5");
|
| | | }
|
| | | |
| | | BigDecimal percent = record.getPercent();
|
| | | if (percent != null && (percent.compareTo(new BigDecimal(60)) > 0
|
| | | || percent.compareTo(new BigDecimal(1)) < 0)) {
|
| | | throw new PushCouponException(1, "券比例范围是1~60 的正整数");
|
| | | }
|
| | | |
| | |
|
| | | Long id = record.getId();
|
| | | if (id == null) {
|
| | | // 新增
|
| | | record.setPushed(false);
|
| | | record.setCreateTime(new Date());
|
| | | record.setUpdateTime(new Date());
|
| | |
|
| | | // 插入数据
|
| | | insert(record);
|
| | | } else {
|
| | | // 修改
|
| | | PushCoupon current = selectByPrimaryKey(id);
|
| | | if (current == null) {
|
| | | throw new PushCouponException(1, "该记录已不存在");
|
| | | }
|
| | | |
| | | if(current.isPushed()) {
|
| | | throw new PushCouponException(1, "已推送的信息不能修改");
|
| | | }
|
| | |
|
| | | current.setTitle(title);
|
| | | current.setContent(content);
|
| | | current.setAmount(amount);
|
| | | current.setStartTime(startTime);
|
| | | current.setEndTime(endTime);
|
| | | current.setUids(record.getUids());
|
| | | current.setRemark(record.getRemark());
|
| | |
|
| | | // 更新数据
|
| | | updateByPrimaryKey(current);
|
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public void executePush(Long id) throws Exception, PushCouponException, PushException {
|
| | |
|
| | | PushCoupon pushCoupon = selectByPrimaryKey(id);
|
| | | if (pushCoupon == null) {
|
| | | throw new PushCouponException(1, "推送信息已不存在");
|
| | | }
|
| | | |
| | | if(pushCoupon.isPushed()) {
|
| | | throw new PushCouponException(1, "该信息不能重复推送");
|
| | | }
|
| | | |
| | |
|
| | | String title = pushCoupon.getTitle();
|
| | | String content = pushCoupon.getContent();
|
| | | if (title == null || title.trim().length() == 0 || content == null || content.trim().length() == 0) {
|
| | | throw new PushCouponException(1, "标题或内容不能为空");
|
| | | }
|
| | | |
| | | |
| | | List<String> listuid = null;
|
| | | String uids = pushCoupon.getUids();
|
| | | if (uids != null && uids.trim().length() > 0) {
|
| | | listuid = Arrays.asList(uids.split(","));
|
| | | if (listuid == null || listuid.size() == 0) {
|
| | | throw new PushCouponException(1, "用户id格式不正确");
|
| | | }
|
| | | }
|
| | | |
| | | List<String> listVersion = null;
|
| | | String versions = pushCoupon.getVersions();
|
| | | if (versions != null && versions.trim().length() > 0) {
|
| | | listVersion = Arrays.asList(versions.split(","));
|
| | | if (listVersion == null || listVersion.size() == 0) {
|
| | | throw new PushCouponException(1, "版本号格式不正确\"");
|
| | | }
|
| | | }
|
| | | |
| | | if (listuid == null) {
|
| | | // 全推
|
| | | pushService.pushWelfareCenter(null, title, content, listVersion);
|
| | | |
| | | } else {
|
| | | // 指定用户推送
|
| | | for (String str_uid: listuid) {
|
| | | if (str_uid != null && str_uid.trim().length() > 0) {
|
| | | pushService.pushWelfareCenter(Long.parseLong(str_uid), title, content, listVersion);
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | // 已推送
|
| | | pushCoupon.setPushed(true);
|
| | | // 推送时间
|
| | | pushCoupon.setPushTime(new Date());
|
| | | // 更新时间
|
| | | pushCoupon.setUpdateTime(new Date());
|
| | | |
| | | updateByPrimaryKeySelective(pushCoupon);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public void deleteBatchByPrimaryKey(List<Long> list) {
|
| | | if (list == null || list.size() == 0) {
|
| | | return;
|
| | | }
|
| | | |
| | | for (Long id: list) {
|
| | | long receivedCount = pushCouponRecordService.countByPushId(id);
|
| | | // 领取数量
|
| | | if (receivedCount > 0) {
|
| | | continue;
|
| | | }
|
| | | |
| | | pushCouponMapper.deleteByPrimaryKey(id);
|
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<PushCoupon> listQueryEffective() {
|
| | | return pushCouponMapper.listQueryEffective();
|
| | | }
|
| | | |
| | | }
|
| | | package com.yeshi.fanli.service.impl.push; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.yeshi.fanli.dao.mybatis.push.PushCouponMapper; |
| | | import com.yeshi.fanli.entity.bus.user.UserSystemCoupon; |
| | | import com.yeshi.fanli.entity.push.PushCoupon; |
| | | import com.yeshi.fanli.entity.push.PushCouponRecord; |
| | | import com.yeshi.fanli.exception.push.PushCouponException; |
| | | import com.yeshi.fanli.exception.push.PushException; |
| | | import com.yeshi.fanli.service.inter.config.ConfigService; |
| | | import com.yeshi.fanli.service.inter.push.PushCouponRecordService; |
| | | import com.yeshi.fanli.service.inter.push.PushCouponService; |
| | | import com.yeshi.fanli.service.inter.push.PushService; |
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponService; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | |
| | | import net.sf.json.JSONObject; |
| | | |
| | | @Service |
| | | public class PushCouponServiceImpl implements PushCouponService { |
| | | |
| | | @Resource |
| | | private PushService pushService; |
| | | |
| | | @Resource |
| | | private PushCouponMapper pushCouponMapper; |
| | | |
| | | @Resource |
| | | private PushCouponRecordService pushCouponRecordService; |
| | | |
| | | @Override |
| | | public int deleteByPrimaryKey(Long id) { |
| | | return pushCouponMapper.deleteByPrimaryKey(id); |
| | | } |
| | | |
| | | @Override |
| | | public int insert(PushCoupon record) { |
| | | return pushCouponMapper.insert(record); |
| | | } |
| | | |
| | | @Override |
| | | public int insertSelective(PushCoupon record) { |
| | | return pushCouponMapper.insertSelective(record); |
| | | } |
| | | |
| | | @Override |
| | | public PushCoupon selectByPrimaryKey(Long id) { |
| | | return pushCouponMapper.selectByPrimaryKey(id); |
| | | } |
| | | |
| | | @Override |
| | | public int updateByPrimaryKeySelective(PushCoupon record) { |
| | | return pushCouponMapper.updateByPrimaryKeySelective(record); |
| | | } |
| | | |
| | | @Override |
| | | public int updateByPrimaryKey(PushCoupon record) { |
| | | return pushCouponMapper.updateByPrimaryKey(record); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<PushCoupon> listQuery(long start, int count, String key, Integer state, SystemEnum system) { |
| | | return pushCouponMapper.listQuery(start, count, key, state, system); |
| | | } |
| | | |
| | | @Override |
| | | public long countQuery(String key, Integer state, SystemEnum system) { |
| | | return pushCouponMapper.countQuery(key, state, system); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void save(PushCoupon record) throws PushCouponException, Exception { |
| | | if (record == null) { |
| | | throw new PushCouponException(1, "参数不正确"); |
| | | } |
| | | |
| | | String uids = record.getUids(); |
| | | if (StringUtil.isNullOrEmpty(uids)) { |
| | | throw new PushCouponException(1, "发放用户不能为空"); |
| | | } |
| | | |
| | | Integer amount = record.getAmount(); |
| | | if (amount == null) { |
| | | throw new PushCouponException(1, "券数量不能为空"); |
| | | } else if (amount < 1 || amount > 5) { |
| | | throw new PushCouponException(1, "券数量范围是 1~5"); |
| | | } |
| | | |
| | | |
| | | Long id = record.getId(); |
| | | if (id == null) { |
| | | // 新增 |
| | | record.setCreateTime(new Date()); |
| | | record.setUpdateTime(new Date()); |
| | | // 插入数据 |
| | | pushCouponMapper.insert(record); |
| | | |
| | | String[] uidArray = uids.split(","); |
| | | |
| | | if (uidArray != null) { |
| | | for (int i = 0; i < uidArray.length; i++) { |
| | | |
| | | Long uid = Long.parseLong(uidArray[i]); |
| | | // 插入记录 |
| | | PushCouponRecord pushCouponRecord = new PushCouponRecord(); |
| | | pushCouponRecord.setPushCoupon(record); |
| | | pushCouponRecord.setUid(uid); |
| | | pushCouponRecord.setCreateTime(new Date()); |
| | | |
| | | // 插入领取记录 |
| | | //pushCouponRecordService.insertSelective(pushCouponRecord); |
| | | // 直接发送券 |
| | | //userSystemCouponService.randomRewardCoupon(amount, uid, UserSystemCoupon.SOURCE_SYSTEM_PUSH); |
| | | } |
| | | } |
| | | |
| | | |
| | | } else { |
| | | // |
| | | // // 修改 |
| | | // PushCoupon current = selectByPrimaryKey(id); |
| | | // if (current == null) { |
| | | // throw new PushCouponException(1, "该记录已不存在"); |
| | | // } |
| | | // |
| | | // if(current.isPushed()) { |
| | | // throw new PushCouponException(1, "已推送的信息不能修改"); |
| | | // } |
| | | // current.setAmount(amount); |
| | | // current.setUids(record.getUids()); |
| | | // current.setRemark(record.getRemark()); |
| | | // current.setUpdateTime(new Date()); |
| | | // // 更新数据 |
| | | // updateByPrimaryKey(current); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void executePush(Long id) throws Exception, PushCouponException, PushException { |
| | | |
| | | PushCoupon pushCoupon = selectByPrimaryKey(id); |
| | | if (pushCoupon == null) { |
| | | throw new PushCouponException(1, "推送信息已不存在"); |
| | | } |
| | | |
| | | if (pushCoupon.isPushed()) { |
| | | throw new PushCouponException(1, "该信息不能重复推送"); |
| | | } |
| | | String versions = pushCoupon.getVersions(); |
| | | if (versions == null || versions.trim().length() == 0) { |
| | | throw new PushCouponException(1, "推送版本不能为空"); |
| | | } |
| | | |
| | | |
| | | String title = pushCoupon.getTitle(); |
| | | String content = pushCoupon.getContent(); |
| | | if (title == null || title.trim().length() == 0 || content == null || content.trim().length() == 0) { |
| | | throw new PushCouponException(1, "标题或内容不能为空"); |
| | | } |
| | | |
| | | |
| | | List<String> listuid = null; |
| | | String uids = pushCoupon.getUids(); |
| | | if (uids != null && uids.trim().length() > 0) { |
| | | listuid = Arrays.asList(uids.split(",")); |
| | | if (listuid == null || listuid.size() == 0) { |
| | | throw new PushCouponException(1, "用户id格式不正确"); |
| | | } |
| | | } |
| | | |
| | | List<String> listIOS = new ArrayList<String>(); |
| | | JSONObject json = JSONObject.fromObject(versions); |
| | | String versionsIOS = json.getString("IOS"); |
| | | if (versionsIOS != null && versionsIOS.trim().length() > 0) { |
| | | if (versionsIOS.contains("全推")) { |
| | | listIOS = null; |
| | | } else { |
| | | listIOS = Arrays.asList(versionsIOS.split(",")); |
| | | } |
| | | } |
| | | |
| | | List<String> listAndroid = new ArrayList<String>(); |
| | | String versionsAndroid = json.getString("Android"); |
| | | if (versionsAndroid != null && versionsAndroid.trim().length() > 0) { |
| | | if (versionsAndroid.contains("全推")) { |
| | | listAndroid = null; |
| | | } else { |
| | | listAndroid = Arrays.asList(versionsAndroid.split(",")); |
| | | } |
| | | } |
| | | |
| | | |
| | | if (listuid == null) { |
| | | // 全推 |
| | | pushService.pushWelfareCenter(null, title, content, listIOS, listAndroid, pushCoupon.getSystem()); |
| | | |
| | | } else { |
| | | // 指定用户推送 |
| | | for (String str_uid : listuid) { |
| | | if (str_uid != null && str_uid.trim().length() > 0) { |
| | | pushService.pushWelfareCenter(Long.parseLong(str_uid), title, content, listIOS, listAndroid, pushCoupon.getSystem()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 已推送 |
| | | pushCoupon.setPushed(true); |
| | | // 推送时间 |
| | | pushCoupon.setPushTime(new Date()); |
| | | // 更新时间 |
| | | pushCoupon.setUpdateTime(new Date()); |
| | | |
| | | updateByPrimaryKeySelective(pushCoupon); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void deleteBatchByPrimaryKey(List<Long> list) { |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | for (Long id : list) { |
| | | long receivedCount = pushCouponRecordService.countByPushId(id); |
| | | // 领取数量 |
| | | if (receivedCount > 0) { |
| | | continue; |
| | | } |
| | | |
| | | pushCouponMapper.deleteByPrimaryKey(id); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<PushCoupon> listQueryEffective(SystemEnum system) { |
| | | return pushCouponMapper.listQueryEffective(system); |
| | | } |
| | | |
| | | } |