PlanServiceImpl.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. package com.ruoyi.demo.service.impl;
  2. import cn.hutool.core.lang.Dict;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.github.pagehelper.PageHelper;
  5. import com.github.pagehelper.PageInfo;
  6. import com.ruoyi.demo.entity.*;
  7. import com.ruoyi.demo.entity.bo.CallBackBean;
  8. import com.ruoyi.demo.entity.bo.PlanAddBo;
  9. import com.ruoyi.demo.entity.bo.PlanBo;
  10. import com.ruoyi.demo.entity.bo.PlanItemAddBo;
  11. import com.ruoyi.demo.entity.vo.*;
  12. import com.ruoyi.demo.mapper.*;
  13. import com.ruoyi.demo.service.PlanService;
  14. import com.ruoyi.demo.utils.SendCallBackUtil;
  15. import com.ruoyi.demo.utils.SignUtil;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.time.LocalDateTime;
  20. import java.time.ZoneId;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. import java.util.Map;
  24. @Service
  25. @Transactional
  26. public class PlanServiceImpl implements PlanService {
  27. @Autowired
  28. PlanMapper planMapper;
  29. @Autowired
  30. PlanItemMapper planItemMapper;
  31. @Autowired
  32. PlanAuditMapper planAuditMapper;
  33. @Autowired
  34. AppMapper appMapper;
  35. @Autowired
  36. CommercialMapper commercialMapper;
  37. @Autowired
  38. SystemSetterMapper systemSetterMapper;
  39. @Autowired
  40. StoreMapper storeMapper;
  41. @Autowired
  42. PlanPushStatisticsMapper planPushStatisticsMapper;
  43. @Autowired
  44. AddrCategoryMapper addrCategoryMapper;
  45. @Autowired
  46. EquipmentMapper equipmentMapper;
  47. @Autowired
  48. GoodsMapper goodsMapper;
  49. // @Autowired
  50. // SysUserMapper sysUserMapper;
  51. @Override
  52. public int addPlan(PlanAddBo bo) {
  53. QueryWrapper<App> appQueryWrapper = new QueryWrapper<>();
  54. appQueryWrapper.eq("appkey",bo.getAppkey());
  55. appQueryWrapper.eq("deleted","0");
  56. App app = appMapper.selectOne(appQueryWrapper);
  57. if (app == null)
  58. return -1;
  59. Map<String,Object> params = Dict.create()
  60. .set("appkey",bo.getAppkey())
  61. .set("goodsId",bo.getGoodsId())
  62. .set("goodsImg",bo.getGoodsImg())
  63. .set("goodsName",bo.getGoodsName())
  64. .set("goodsLogo",bo.getGoodsLogo())
  65. .set("goodsIntroduce",bo.getGoodsIntroduce())
  66. .set("goodsPrice",bo.getGoodsPrice())
  67. .set("goodsClassify",bo.getGoodsClassify())
  68. .set("planStartTime",bo.getPlanStartTime())
  69. .set("planEndTime",bo.getPlanEndTime())
  70. .set("items",bo.getItems())
  71. .set("sign",bo.getSign());
  72. if (!SignUtil.verify(params,app.getAppSecret()))
  73. return -3;
  74. // 插入广告计划
  75. Plan plan = new Plan(app,bo);
  76. planMapper.insert(plan);
  77. // 插入广告计划明细
  78. for (PlanItemAddBo itemAddBo : bo.getItems()) {
  79. PlanItem item = new PlanItem(plan.getPlanId(), itemAddBo);
  80. planItemMapper.insert(item);
  81. }
  82. // 插入商品信息
  83. QueryWrapper<Goods> goodsQueryWrapper = new QueryWrapper<>();
  84. goodsQueryWrapper.eq("appkey",bo.getAppkey());
  85. goodsQueryWrapper.eq("goods_id",bo.getGoodsId());
  86. Goods query = goodsMapper.selectOne(goodsQueryWrapper);
  87. if (query == null){
  88. Goods goods = new Goods(plan);
  89. goodsMapper.insert(goods);
  90. }
  91. return 1;
  92. }
  93. @Override
  94. public int deletePlan(String id) {
  95. QueryWrapper<PlanItem> itemQueryWrapper = new QueryWrapper<>();
  96. itemQueryWrapper.eq("plan_id",id);
  97. planItemMapper.delete(itemQueryWrapper);
  98. QueryWrapper<Plan> queryWrapper = new QueryWrapper<>();
  99. queryWrapper.eq("plan_id",id);
  100. return planMapper.delete(queryWrapper);
  101. }
  102. @Override
  103. public int deletePlans(List<String> ids) {
  104. int i = 0;
  105. for (String id : ids){
  106. QueryWrapper<Plan> queryWrapper = new QueryWrapper<>();
  107. queryWrapper.eq("plan_id",id);
  108. i += planMapper.delete(queryWrapper);
  109. }
  110. return i;
  111. }
  112. @Override
  113. public int checkPlan(PlanBo bo,Long userId,String userName) {
  114. QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
  115. planQueryWrapper.eq("plan_id",bo.getPlanId());
  116. planQueryWrapper.eq("deleted","0");
  117. Plan plan = planMapper.selectOne(planQueryWrapper);
  118. if (plan == null)
  119. return -1;
  120. QueryWrapper<App> appQueryWrapper = new QueryWrapper<>();
  121. appQueryWrapper.eq("appkey",plan.getAppkey());
  122. App app = appMapper.selectOne(appQueryWrapper);
  123. plan.setState(bo.getState());
  124. int i = planMapper.updateById(plan);
  125. if (i == 0)
  126. return 0;
  127. // SysUser sysUser = sysUserMapper.selectById(userId);
  128. PlanAudit audit = new PlanAudit(bo,userId.toString(),userName);
  129. int insert = planAuditMapper.insert(audit);
  130. if (insert == 1){
  131. CallBackBean callBackBean = new CallBackBean();
  132. callBackBean.setAuditPerson(userName);
  133. callBackBean.setAuditComment(bo.getAuditComment());
  134. callBackBean.setAuditTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
  135. SendCallBackUtil.sendCallBack(app.getCallBack(),callBackBean);
  136. }
  137. return insert;
  138. }
  139. @Override
  140. public PageInfo<List<PlanListVo>> getPlanList(PlanBo bo) {
  141. PageHelper.startPage(bo.getPageNum(), bo.getPageSize(),true);
  142. QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
  143. if (bo.getText() != null){
  144. planQueryWrapper.like("plan_id",bo.getText())
  145. .or()
  146. .like("goods_name",bo.getText());
  147. }
  148. planQueryWrapper.eq("deleted","0");
  149. List<Plan> plans = planMapper.selectList(planQueryWrapper);
  150. List<PlanListVo> vos = new ArrayList<>();
  151. for (Plan plan : plans){
  152. vos.add(new PlanListVo(plan));
  153. }
  154. return new PageInfo(vos);
  155. }
  156. @Override
  157. public PlanDetailVo getPlanDetail(String planId) {
  158. QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
  159. planQueryWrapper.eq("plan_id",planId);
  160. planQueryWrapper.eq("deleted","0");
  161. Plan plan = planMapper.selectOne(planQueryWrapper);
  162. if (plan == null)
  163. return null;
  164. QueryWrapper<PlanItem> itemQueryWrapper = new QueryWrapper<>();
  165. itemQueryWrapper.eq("plan_id",planId);
  166. List<PlanItem> items = planItemMapper.selectList(itemQueryWrapper);
  167. List<PlanItemVo> itemVos = new ArrayList<>();
  168. if (items != null)
  169. for (PlanItem item : items){
  170. itemVos.add(new PlanItemVo(item));
  171. }
  172. PlanDetailVo vo = new PlanDetailVo(plan, itemVos);
  173. return vo;
  174. }
  175. @Override
  176. public List<PlanPushVo> getPlanPush(String equipmentId) {
  177. // 根据设备id查询可投放的广告计划
  178. // 再根据每个广告计划id,查询其商品信息
  179. List<PlanPushVo> pushVos = new ArrayList<>();
  180. QueryWrapper<PlanItem> itemQueryWrapper = new QueryWrapper<>();
  181. itemQueryWrapper.eq("equipment_id",equipmentId);
  182. itemQueryWrapper.eq("deleted","0");
  183. List<PlanItem> items = planItemMapper.selectList(itemQueryWrapper);
  184. for (PlanItem item : items){
  185. QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
  186. planQueryWrapper.apply("DATE_FORMAT(plan_start_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
  187. planQueryWrapper.apply("DATE_FORMAT(plan_end_time,'%Y-%m-%d %H:%i:%s') > DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
  188. planQueryWrapper.eq("plan_id",item.getPlanId());
  189. planQueryWrapper.eq("state",1);
  190. planQueryWrapper.eq("deleted","0");
  191. Plan plan = planMapper.selectOne(planQueryWrapper);
  192. if (plan != null)
  193. pushVos.add(new PlanPushVo(item,plan));
  194. }
  195. return pushVos;
  196. }
  197. @Override
  198. public int planUpDown(String planId) {
  199. QueryWrapper<Plan> queryWrapper = new QueryWrapper<>();
  200. queryWrapper.eq("plan_id",planId);
  201. queryWrapper.eq("deleted","0");
  202. Plan plan = planMapper.selectOne(queryWrapper);
  203. if (plan == null)
  204. return -1;
  205. plan.setOnState(plan.getOnState()+1);
  206. if (plan.getOnState() >= 2)
  207. plan.setOnState(0);
  208. return planMapper.updateById(plan);
  209. }
  210. @Override
  211. public PageInfo<List<PlanManageListVo>> getPlanManageList(PlanBo bo) {
  212. PageHelper.startPage(bo.getPageNum(),bo.getPageSize(),true);
  213. QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
  214. planQueryWrapper.eq("state",bo.getState());
  215. if (bo.getText() != null)
  216. planQueryWrapper.like("plan_id",bo.getText())
  217. .or()
  218. .like("principal_name",bo.getText())
  219. .or()
  220. .like("principal_telephone",bo.getText());
  221. if (bo.getStartTime() != null)
  222. planQueryWrapper.apply("DATE_FORMAT(plan_start_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getStartTime());
  223. if (bo.getEndTime() != null)
  224. planQueryWrapper.apply("DATE_FORMAT(plan_end_time,'%Y-%m-%d %H:%i:%s') > DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getEndTime());
  225. planQueryWrapper.eq("deleted","0");
  226. List<Plan> plans = planMapper.selectList(planQueryWrapper);
  227. List<PlanManageListVo> vos = new ArrayList<>();
  228. for (Plan plan : plans){
  229. PlanManageListVo vo = new PlanManageListVo(plan);
  230. Integer count = planItemMapper.selectEquipmentCountByPlanId(plan.getPlanId());
  231. vo.setEquipmentCount(count);
  232. vos.add(vo);
  233. }
  234. return new PageInfo(vos);
  235. }
  236. @Override
  237. public PlanManageDetailVo getPlanManageDetail(String planId) {
  238. QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
  239. planQueryWrapper.eq("plan_id",planId);
  240. planQueryWrapper.eq("deleted","0");
  241. Plan plan = planMapper.selectOne(planQueryWrapper);
  242. if (plan == null)
  243. return null;
  244. QueryWrapper<PlanItem> itemQueryWrapper = new QueryWrapper<>();
  245. itemQueryWrapper.eq("plan_id",planId);
  246. itemQueryWrapper.eq("deleted","0");
  247. List<PlanItem> items = planItemMapper.selectList(itemQueryWrapper);
  248. List<PlanManageItemVo> itemVos = new ArrayList<>();
  249. for (PlanItem item : items){
  250. PlanManageItemVo itemVo = new PlanManageItemVo(item);
  251. Store store = storeMapper.selectById(item.getStoreId());
  252. itemVo.setStoreName(store.getStoreName());
  253. itemVos.add(itemVo);
  254. }
  255. PlanManageDetailVo vo = new PlanManageDetailVo(plan, itemVos);
  256. return vo;
  257. }
  258. @Override
  259. public PageInfo<List<PlanPushListVo>> getPlanPushList(PlanBo bo) {
  260. PageHelper.startPage(bo.getPageNum(),bo.getPageSize(),true);
  261. QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
  262. planQueryWrapper.eq("appkey",bo.getAppkey());
  263. // planQueryWrapper.eq("commercial_id",bo.getCommercialId());
  264. if (bo.getText() != null)
  265. planQueryWrapper.like("plan_id",bo.getText())
  266. .or()
  267. .like("plan_name",bo.getText())
  268. .or()
  269. .like("principal_name",bo.getText())
  270. .or()
  271. .like("principal_telephone",bo.getText());
  272. if (bo.getStartTime() != null)
  273. planQueryWrapper.apply("DATE_FORMAT(plan_start_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getStartTime());
  274. if (bo.getEndTime() != null)
  275. planQueryWrapper.apply("DATE_FORMAT(plan_end_time,'%Y-%m-%d %H:%i:%s') > DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getEndTime());
  276. planQueryWrapper.eq("deleted","0");
  277. List<Plan> plans = planMapper.selectList(planQueryWrapper);
  278. List<PlanPushListVo> vos = new ArrayList<>();
  279. for (Plan plan : plans){
  280. PlanPushListVo vo = new PlanPushListVo(plan);
  281. Integer count = planItemMapper.selectEquipmentCountByPlanId(plan.getPlanId());
  282. vo.setEquipmentCount(count);
  283. vos.add(vo);
  284. }
  285. return new PageInfo(vos);
  286. }
  287. @Override
  288. public PageInfo<List<PlanPushStatisticsListVo>> getPlanPushStatisticsList(PlanBo bo) {
  289. PageHelper.startPage(bo.getPageNum(),bo.getPageSize(),true);
  290. QueryWrapper<PlanPushStatistics> statisticsQueryWrapper = new QueryWrapper<>();
  291. if (bo.getText() != null)
  292. statisticsQueryWrapper.like("plan_id",bo.getText())
  293. .or()
  294. .like("equipment_id",bo.getText())
  295. .or()
  296. .like("equipment_name",bo.getText());
  297. if (bo.getStartTime() != null)
  298. statisticsQueryWrapper.apply("DATE_FORMAT(laster_time,'%Y-%m-%d %H:%i:%s') >= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getStartTime());
  299. if (bo.getEndTime() != null)
  300. statisticsQueryWrapper.apply("DATE_FORMAT(laster_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getEndTime());
  301. List<PlanPushStatistics> list = planPushStatisticsMapper.selectList(statisticsQueryWrapper);
  302. List<PlanPushStatisticsListVo> vos = new ArrayList<>();
  303. for (PlanPushStatistics statistics : list){
  304. vos.add(new PlanPushStatisticsListVo(statistics));
  305. }
  306. return new PageInfo(vos);
  307. }
  308. @Override
  309. public PlanHomeVo getPlanTotal() {
  310. PlanHomeVo vo = new PlanHomeVo();
  311. vo.setTotal(planMapper.selectPlanTotal());
  312. return vo;
  313. }
  314. @Override
  315. public List<AddrCategory> getAddrCategory() {
  316. return addrCategoryMapper.selectList(null);
  317. }
  318. @Override
  319. public PageInfo<List<Equipment>> getEquipments(PlanBo bo) {
  320. PageHelper.startPage(bo.getPageNum(),bo.getPageSize(),true);
  321. QueryWrapper<Equipment> equipmentQueryWrapper = new QueryWrapper<>();
  322. if (bo.getText() != null)
  323. equipmentQueryWrapper.like("equipment_id",bo.getText())
  324. .or()
  325. .like("equipment_name",bo.getText());
  326. if (bo.getAddrCodes() != null){
  327. for (String addrCode : bo.getAddrCodes()){
  328. String province = String.valueOf(addrCode.charAt(0))+String.valueOf(addrCode.charAt(1));
  329. String city = String.valueOf(addrCode.charAt(2))+String.valueOf(addrCode.charAt(3));
  330. String district = String.valueOf(addrCode.charAt(4))+String.valueOf(addrCode.charAt(5));
  331. if (district.equals("00")){
  332. if (city.equals("00"))
  333. equipmentQueryWrapper.or().likeRight("addr_code",province);
  334. else
  335. equipmentQueryWrapper.or().likeRight("addr_code",province+city);
  336. }else
  337. equipmentQueryWrapper.or().likeRight("addr_code",province+city+district);
  338. }
  339. }
  340. return new PageInfo(equipmentMapper.selectList(equipmentQueryWrapper));
  341. }
  342. }