ActivityInfoServiceImpl.java 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
  1. package com.izouma.awesomeadmin.service.impl;
  2. import com.izouma.awesomeadmin.constant.AppConstant;
  3. import com.izouma.awesomeadmin.dao.*;
  4. import com.izouma.awesomeadmin.dto.Page;
  5. import com.izouma.awesomeadmin.model.*;
  6. import com.izouma.awesomeadmin.service.ActivityInfoService;
  7. import org.apache.log4j.Logger;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import java.math.BigDecimal;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14. /**
  15. * service接口实现类
  16. */
  17. @Service
  18. public class ActivityInfoServiceImpl implements ActivityInfoService {
  19. private static Logger logger = Logger.getLogger(ActivityInfoServiceImpl.class);
  20. @Autowired
  21. private ActivityInfoMapper activityInfoMapper;
  22. @Autowired
  23. private UserInfoMapper userInfoMapper;
  24. @Autowired
  25. private MemberPointMapper memberPointMapper;
  26. @Autowired
  27. private ActivityLogMapper activityLogMapper;
  28. @Autowired
  29. private RechargeRecordMapper rechargeRecordMapper;
  30. @Override
  31. public List<ActivityInfo> getActivityInfoList(ActivityInfo record) {
  32. logger.info("getActivityInfoList");
  33. try {
  34. return activityInfoMapper.queryAllActivityInfo(record);
  35. } catch (Exception e) {
  36. logger.error("getActivityInfoList", e);
  37. }
  38. return null;
  39. }
  40. @Override
  41. public List<ActivityInfo> getActivityInfoByPage(Page page, ActivityInfo record) {
  42. logger.info("getActivityInfoByPage");
  43. try {
  44. Map<String, Object> parameter = new HashMap<String, Object>();
  45. parameter.put("record", record);
  46. parameter.put(AppConstant.PAGE, page);
  47. return activityInfoMapper.queryActivityInfoByPage(parameter);
  48. } catch (Exception e) {
  49. logger.error("getActivityInfoByPage", e);
  50. }
  51. return null;
  52. }
  53. @Override
  54. public ActivityInfo getActivityInfoById(String id) {
  55. logger.info("getActivityInfoyId");
  56. try {
  57. return activityInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
  58. } catch (Exception e) {
  59. logger.error("getActivityInfoById", e);
  60. }
  61. return null;
  62. }
  63. @Override
  64. public ActivityInfo getActivityInfo(ActivityInfo record) {
  65. logger.info("getActivityInfo");
  66. try {
  67. return activityInfoMapper.queryActivityInfo(record);
  68. } catch (Exception e) {
  69. logger.error("getActivityInfo", e);
  70. }
  71. return null;
  72. }
  73. @Override
  74. public ActivityInfo getUsedActivityInfo(ActivityInfo record) {
  75. logger.info("getUsedActivityInfo");
  76. try {
  77. return activityInfoMapper.queryUsedActivityInfo(record);
  78. } catch (Exception e) {
  79. logger.error("getUsedActivityInfo", e);
  80. }
  81. return null;
  82. }
  83. @Override
  84. public List<ActivityInfo> getUsedManJianActivityInfo(ActivityInfo record) {
  85. logger.info("getUsedManJianActivityInfo");
  86. try {
  87. return activityInfoMapper.queryUsedManJianActivityInfo(record);
  88. } catch (Exception e) {
  89. logger.error("getUsedManJianActivityInfo", e);
  90. }
  91. return null;
  92. }
  93. @Override
  94. public boolean createActivityInfo(ActivityInfo record) {
  95. logger.info("createActivityInfo");
  96. try {
  97. int updates = activityInfoMapper.insertSelective(record);
  98. if (updates > 0) {
  99. return true;
  100. }
  101. } catch (Exception e) {
  102. logger.error("createActivityInfo", e);
  103. }
  104. return false;
  105. }
  106. @Override
  107. public boolean deleteActivityInfo(ActivityInfo record) {
  108. logger.info("deleteActivityInfo");
  109. try {
  110. int updates = activityInfoMapper.delete(record);
  111. if (updates > 0) {
  112. return true;
  113. }
  114. } catch (Exception e) {
  115. logger.error("deleteActivityInfo", e);
  116. }
  117. return false;
  118. }
  119. @Override
  120. public boolean updateActivityInfo(ActivityInfo record) {
  121. logger.info("updateActivityInfo");
  122. try {
  123. int updates = activityInfoMapper.updateByPrimaryKeySelective(record);
  124. if (updates > 0) {
  125. return true;
  126. }
  127. } catch (Exception e) {
  128. logger.error("updateActivityInfo", e);
  129. }
  130. return false;
  131. }
  132. @Override
  133. public boolean consumptionSongMoney(UserOrder userOrder) {
  134. logger.info("consumptionSongMoney");
  135. try {
  136. ActivityInfo activityInfo = new ActivityInfo();
  137. activityInfo.setTypeId(4);
  138. activityInfo = activityInfoMapper.queryUsedActivityInfo(activityInfo);
  139. if (activityInfo != null) {
  140. //最小赠送条件
  141. int minValue = Integer.valueOf(activityInfo.getMinValue());
  142. //赠送比率 消费 * rate = 反积分
  143. double rate = Double.valueOf(activityInfo.getRatio());
  144. //消费金额 余额和现金
  145. int consumptionMoney = userOrder.getCash().add(userOrder.getCoin()).intValue();
  146. //反积分份数
  147. int pointTimes = (int) Math.floor(consumptionMoney * 1.0 / minValue);
  148. //积分数
  149. int point = (int) Math.floor(minValue * rate / 100) * pointTimes;
  150. if (consumptionMoney >= minValue && point > 0) {//如果消费金额大于要求,可用赠送积分
  151. MemberPoint memberPoint = new MemberPoint();
  152. memberPoint.setMoney(String.valueOf(point));
  153. memberPoint.setUserId(String.valueOf(userOrder.getUserId()));
  154. memberPoint.setOrderId(String.valueOf(userOrder.getId()));
  155. int userId = Integer.valueOf(userOrder.getUserId());
  156. UserInfo userInfo = userInfoMapper.selectByPrimaryKey(userId);
  157. if (userInfo != null) {
  158. UserInfo updateUser = new UserInfo();
  159. updateUser.setId(userId);
  160. double balance = userInfo.getMoneyPoint();
  161. double moneyPoint = balance + point;
  162. memberPoint.setCreateUser("管理员");
  163. memberPoint.setBalance(String.valueOf(moneyPoint));
  164. memberPoint.setTypeFlag(AppConstant.CoinType.FAN_HUAN);
  165. memberPoint.setRemark("订单消费反:" + point + "积分");
  166. memberPointMapper.insertSelective(memberPoint);
  167. updateUser.setMoneyPoint(moneyPoint);
  168. userInfoMapper.updateByPrimaryKeySelective(updateUser);
  169. ActivityLog activityLog = new ActivityLog();
  170. activityLog.setActivityId(String.valueOf(activityInfo.getId()));
  171. activityLog.setTypeId(String.valueOf(activityInfo.getTypeId()));
  172. activityLog.setUserId(String.valueOf(userId));
  173. activityLog.setPoint(String.valueOf(point));
  174. activityLog.setCoin(String.valueOf(userOrder.getCoin()));
  175. activityLog.setCash(String.valueOf(userOrder.getCash()));
  176. activityLog.setTotalPrice(String.valueOf(userOrder.getDealPrice()));
  177. activityLog.setOrderId(String.valueOf(userOrder.getId()));
  178. activityLog.setStoreId(String.valueOf(userOrder.getStoreId()));
  179. activityLog.setProductId(String.valueOf(userOrder.getProductId()));
  180. activityLog.setCreateUser("消费反积分");
  181. activityLogMapper.insertSelective(activityLog);
  182. }
  183. }
  184. }
  185. return true;
  186. } catch (Exception e) {
  187. logger.error("消费反积分异常", e);
  188. }
  189. return false;
  190. }
  191. @Override
  192. public boolean manjianActivityLog(UserOrder userOrder) {
  193. logger.info("manjianActivityLog");
  194. try {
  195. ActivityInfo activityInfo = activityInfoMapper.selectByPrimaryKey(userOrder.getActivityId());
  196. if (activityInfo != null) {
  197. ActivityLog activityLog = new ActivityLog();
  198. activityLog.setActivityId(String.valueOf(activityInfo.getId()));
  199. activityLog.setTypeId(String.valueOf(activityInfo.getTypeId()));
  200. activityLog.setUserId(String.valueOf(userOrder.getUserId()));
  201. activityLog.setTotalPrice(String.valueOf(userOrder.getTotlePrice()));
  202. activityLog.setOrderId(String.valueOf(userOrder.getId()));
  203. activityLog.setStoreId(String.valueOf(userOrder.getStoreId()));
  204. activityLog.setProductId(String.valueOf(userOrder.getProductId()));
  205. activityLog.setCreateUser("消费满减活动");
  206. activityLogMapper.insertSelective(activityLog);
  207. }
  208. return true;
  209. } catch (Exception e) {
  210. logger.error("消费满减log异常", e);
  211. }
  212. return false;
  213. }
  214. @Override
  215. public BigDecimal manjianActivity(UserOrder record, BigDecimal orderMoney) {
  216. logger.info("manjianActivity");
  217. try {
  218. ActivityInfo activityInfo = new ActivityInfo();
  219. activityInfo.setTypeId(6);
  220. List<ActivityInfo> activityInfoList = activityInfoMapper.queryUsedManJianActivityInfo(activityInfo);
  221. if (activityInfoList != null) {
  222. ActivityInfo manjian = new ActivityInfo();
  223. for (ActivityInfo temp : activityInfoList) {
  224. BigDecimal tempMax = BigDecimal.valueOf(Double.valueOf(activityInfo.getMaxValue()));
  225. if (orderMoney.compareTo(tempMax) > 0) {
  226. manjian = temp;
  227. }
  228. }
  229. //减免金额
  230. BigDecimal minValue = BigDecimal.valueOf(Double.valueOf(manjian.getMinValue()));
  231. BigDecimal maxValue = BigDecimal.valueOf(Double.valueOf(manjian.getMaxValue()));
  232. if (orderMoney.compareTo(maxValue) > 0) {//如果消费金额大于要求,可用减免
  233. record.setActivityId(manjian.getId());
  234. return orderMoney.subtract(minValue);
  235. }
  236. }
  237. } catch (Exception e) {
  238. logger.error("消费满减异常", e);
  239. }
  240. return orderMoney;
  241. }
  242. @Override
  243. public boolean rechargeSongMoney(RechargeRecord rechargeRecord) {
  244. logger.info("rechargeSongMoney");
  245. try {
  246. ActivityInfo activityInfo = new ActivityInfo();
  247. activityInfo.setTypeId(2);
  248. activityInfo = activityInfoMapper.queryUsedActivityInfo(activityInfo);
  249. if (activityInfo != null) {
  250. //最小赠送条件
  251. int minValue = Integer.valueOf(activityInfo.getMinValue());
  252. //总赠送数量
  253. int limitNum = Integer.valueOf(activityInfo.getActivityType().getLimitNum());
  254. //赠送比率 充值金额* rate = 赠送数量
  255. double rate = Double.valueOf(activityInfo.getRatio());
  256. //充值金额
  257. int rechargeMoney = rechargeRecord.getMoney().intValue();
  258. int point = (int) Math.floor(rechargeMoney * rate / 100);
  259. if (rechargeMoney >= minValue) {//如果充值金额大于要求,可用赠送积分
  260. ActivityLog checkLimit = new ActivityLog();
  261. checkLimit.setTypeId(String.valueOf(activityInfo.getTypeId()));
  262. checkLimit = activityLogMapper.queryLimitActivityLog(checkLimit);
  263. if (checkLimit != null && checkLimit.getPoint() != null && Integer.valueOf(checkLimit.getPoint()) >= limitNum) {
  264. return false;
  265. }
  266. MemberPoint memberPoint = new MemberPoint();
  267. memberPoint.setMoney(String.valueOf(point));
  268. memberPoint.setUserId(String.valueOf(rechargeRecord.getUserId()));
  269. int userId = Integer.valueOf(rechargeRecord.getUserId());
  270. UserInfo userInfo = userInfoMapper.selectByPrimaryKey(userId);
  271. if (userInfo != null) {
  272. UserInfo updateUser = new UserInfo();
  273. updateUser.setId(userId);
  274. double balance = userInfo.getMoneyPoint();
  275. double moneyPoint = balance + point;
  276. memberPoint.setCreateUser("管理员");
  277. memberPoint.setBalance(String.valueOf(moneyPoint));
  278. memberPoint.setTypeFlag(AppConstant.CoinType.SONG);
  279. memberPoint.setRemark("充值" + rechargeMoney + ",赠送:" + point + "积分");
  280. memberPointMapper.insertSelective(memberPoint);
  281. updateUser.setMoneyPoint(moneyPoint);
  282. userInfoMapper.updateByPrimaryKeySelective(updateUser);
  283. ActivityLog activityLog = new ActivityLog();
  284. activityLog.setActivityId(String.valueOf(activityInfo.getId()));
  285. activityLog.setTypeId(String.valueOf(activityInfo.getTypeId()));
  286. activityLog.setUserId(String.valueOf(userId));
  287. activityLog.setPoint(String.valueOf(point));
  288. activityLog.setCoin(String.valueOf(rechargeMoney));
  289. activityLog.setCreateUser("充值礼");
  290. activityLogMapper.insertSelective(activityLog);
  291. }
  292. }
  293. }
  294. return true;
  295. } catch (Exception e) {
  296. logger.error("充值赠送积分异常", e);
  297. }
  298. return false;
  299. }
  300. @Override
  301. public boolean registerSongMoney(UserInfo record) {
  302. logger.info("registerSongMoney");
  303. try {
  304. ActivityInfo activityInfo = new ActivityInfo();
  305. activityInfo.setTypeId(1);
  306. activityInfo = activityInfoMapper.queryUsedActivityInfo(activityInfo);
  307. if (activityInfo != null) {
  308. double song = Integer.valueOf(activityInfo.getMinValue());
  309. if (song > 0) {
  310. MemberPoint memberPoint = new MemberPoint();
  311. memberPoint.setMoney(String.valueOf(song));
  312. memberPoint.setUserId(String.valueOf(record.getId()));
  313. double money = song;
  314. int userId = Integer.valueOf(record.getId());
  315. UserInfo userInfo = userInfoMapper.selectByPrimaryKey(record.getId());
  316. UserInfo updateUser = new UserInfo();
  317. updateUser.setId(userId);
  318. double balance = userInfo.getMoneyPoint();
  319. double moneyPoint = balance + money;
  320. memberPoint.setCreateUser("管理员");
  321. memberPoint.setBalance(String.valueOf(moneyPoint));
  322. memberPoint.setTypeFlag(AppConstant.CoinType.SONG);
  323. memberPoint.setRemark("新用户注册,后台赠送:" + money + "积分");
  324. memberPointMapper.insertSelective(memberPoint);
  325. updateUser.setMoneyPoint(moneyPoint);
  326. userInfoMapper.updateByPrimaryKeySelective(updateUser);
  327. ActivityLog activityLog = new ActivityLog();
  328. activityLog.setActivityId(String.valueOf(activityInfo.getId()));
  329. activityLog.setTypeId(String.valueOf(activityInfo.getTypeId()));
  330. activityLog.setUserId(String.valueOf(record.getId()));
  331. activityLog.setPoint(String.valueOf(song));
  332. activityLog.setCreateUser("注册礼");
  333. activityLogMapper.insertSelective(activityLog);
  334. }
  335. }
  336. return true;
  337. } catch (Exception e) {
  338. logger.error("新用户注册赠送积分异常", e);
  339. }
  340. return false;
  341. }
  342. @Override
  343. public boolean zhongchouSongMoney(ActivityInfo record) {
  344. logger.info("zhongchouSongMoney");
  345. try {
  346. ActivityInfo activityInfo = activityInfoMapper.selectByPrimaryKey(record.getId());
  347. if (activityInfo != null && activityInfo.getUseFlag() != "C" && activityInfo.getTypeId() == 3) {
  348. int roundNum = Integer.valueOf(activityInfo.getMinValue());
  349. double rate = Double.valueOf(activityInfo.getRatio()) / 100;
  350. RechargeRecord param = new RechargeRecord();
  351. param.setBeginTime(activityInfo.getBeginTime());
  352. param.setEndTime(activityInfo.getEndTime());
  353. List<RechargeRecord> rechargeRecordList = rechargeRecordMapper.queryActivityRechargeRecord(param);
  354. int size = rechargeRecordList.size();
  355. int maxNum = size - size % roundNum;
  356. if (maxNum > 0 && maxNum <= size) {
  357. for (int i = 1; i <= maxNum; i++) {
  358. RechargeRecord rechargeRecord = rechargeRecordList.get(i - 1);
  359. int totalCoin = rechargeRecord.getMoney().intValue();
  360. int times = (maxNum - i) / roundNum + 1;
  361. double song = Math.floor(times * rate * totalCoin);
  362. if (song > 0) {
  363. int userId = Integer.valueOf(rechargeRecord.getUserId());
  364. ActivityLog activityCheck = new ActivityLog();
  365. activityCheck.setUserId(String.valueOf(userId));
  366. activityCheck.setActivityId(String.valueOf(activityInfo.getId()));
  367. activityCheck = activityLogMapper.queryActivityLog(activityCheck);
  368. if (activityCheck == null) {
  369. MemberPoint memberPoint = new MemberPoint();
  370. memberPoint.setMoney(String.valueOf(song));
  371. memberPoint.setUserId(String.valueOf(userId));
  372. double money = song;
  373. UserInfo userInfo = userInfoMapper.selectByPrimaryKey(userId);
  374. UserInfo updateUser = new UserInfo();
  375. updateUser.setId(userId);
  376. double balance = userInfo.getMoneyPoint();
  377. double moneyPoint = balance + money;
  378. memberPoint.setCreateUser("管理员");
  379. memberPoint.setBalance(String.valueOf(moneyPoint));
  380. memberPoint.setTypeFlag(AppConstant.CoinType.SONG);
  381. memberPoint.setRemark("众筹奖励,后台赠送:" + money + "积分");
  382. memberPointMapper.insertSelective(memberPoint);
  383. updateUser.setMoneyPoint(moneyPoint);
  384. userInfoMapper.updateByPrimaryKeySelective(updateUser);
  385. ActivityLog activityLog = new ActivityLog();
  386. activityLog.setActivityId(String.valueOf(activityInfo.getId()));
  387. activityLog.setTypeId(String.valueOf(activityInfo.getTypeId()));
  388. activityLog.setUserId(String.valueOf(userId));
  389. activityLog.setPoint(String.valueOf(song));
  390. activityLog.setRemark("第" + i + "位,总人数" + size + "位,获得" + times + "次众筹礼");
  391. activityLog.setCreateUser("众筹礼");
  392. activityLogMapper.insertSelective(activityLog);
  393. }
  394. }
  395. }
  396. }
  397. activityInfo.setUseFlag("C");//结算完成
  398. activityInfoMapper.updateByPrimaryKeySelective(activityInfo);
  399. }
  400. return true;
  401. } catch (Exception e) {
  402. logger.error("新用户注册赠送积分异常", e);
  403. }
  404. return false;
  405. }
  406. }