TaBuildingDynamicController.java 32KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  1. package com.huiju.estateagents.controller;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.excel.ExcelWriter;
  4. import com.alibaba.excel.write.metadata.WriteSheet;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  7. import com.baomidou.mybatisplus.core.metadata.IPage;
  8. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  9. import com.huiju.estateagents.base.BaseController;
  10. import com.huiju.estateagents.base.ResponseBean;
  11. import com.huiju.estateagents.common.CommConstant;
  12. import com.huiju.estateagents.common.JWTUtils;
  13. import com.huiju.estateagents.common.StringUtils;
  14. import com.huiju.estateagents.entity.*;
  15. import com.huiju.estateagents.event.EventBus;
  16. import com.huiju.estateagents.excel.HelpInitiateRecordSucceed;
  17. import com.huiju.estateagents.excel.TaActivityDynamicEnlistExport;
  18. import com.huiju.estateagents.excel.handler.CustomCellWriteHandler;
  19. import com.huiju.estateagents.mapper.*;
  20. import com.huiju.estateagents.service.*;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiImplicitParam;
  23. import io.swagger.annotations.ApiImplicitParams;
  24. import io.swagger.annotations.ApiOperation;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.beans.propertyeditors.CustomDateEditor;
  27. import org.springframework.context.ApplicationContext;
  28. import org.springframework.format.annotation.DateTimeFormat;
  29. import org.springframework.web.bind.ServletRequestDataBinder;
  30. import org.springframework.web.bind.annotation.*;
  31. import javax.servlet.http.HttpServletRequest;
  32. import javax.servlet.http.HttpServletResponse;
  33. import javax.servlet.http.HttpSession;
  34. import javax.swing.*;
  35. import java.io.IOException;
  36. import java.text.DateFormat;
  37. import java.text.SimpleDateFormat;
  38. import java.time.LocalDateTime;
  39. import java.util.ArrayList;
  40. import java.util.Date;
  41. import java.util.HashMap;
  42. import java.util.List;
  43. import java.util.Map;
  44. import static com.huiju.estateagents.event.EventBus.EventType.ActivityCheckin;
  45. /**
  46. * <p>
  47. * 项目动态表 前端控制器
  48. * </p>
  49. *
  50. * @author jobob
  51. * @since 2019-03-21
  52. */
  53. @RestController
  54. @RequestMapping("/api")
  55. @Api(value = "项目活动", tags = "项目活动")
  56. public class TaBuildingDynamicController extends BaseController {
  57. @Autowired
  58. private ITaBuildingDynamicService iBuildingDynamicService;
  59. @Autowired
  60. private TaBuildingMapper taBuildingMapper;
  61. @Autowired
  62. private ITaPersonService taPersonService;
  63. @Autowired
  64. private ITaSaveService taSaveService;
  65. @Autowired
  66. private ITaBuildingService iTaBuildingService;
  67. @Autowired
  68. private TaActivityDynamicEnlistMapper taActivityDynamicEnlistMapper;
  69. @Autowired
  70. private TaSharePersonFromMapper taSharePersonFromMapper;
  71. @Autowired
  72. private ApplicationContext applicationContext;
  73. @Autowired
  74. private IMiniAppService miniAppService;
  75. @Autowired
  76. private TaMiniappMapper taMiniappMapper;
  77. @Autowired
  78. private TaMiniappQrcodeMapper taMiniappQrcodeMapper;
  79. @Autowired
  80. private ITaPointsRecordsService taPointsRecordsService;
  81. @InitBinder
  82. protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
  83. DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  84. CustomDateEditor editor = new CustomDateEditor(df, true);//true表示允许为空,false反之
  85. binder.registerCustomEditor(Date.class, editor);
  86. }
  87. @ApiOperation(value = "后台管理端查询项目活动列表", notes = "后台管理端查询项目活动列表")
  88. @ApiImplicitParams({
  89. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageNum", paramType = "query",value = "第几页"),
  90. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageSize", paramType = "query",value = "一页多少行"),
  91. @ApiImplicitParam(dataTypeClass = String.class, name = "name", paramType = "query",value = "项目名称"),
  92. @ApiImplicitParam(dataTypeClass = Integer.class, name = "cityId", paramType = "query",value = "城市id"),
  93. @ApiImplicitParam(dataTypeClass = String.class, name = "buildingId", paramType = "query",value = "项目id"),
  94. @ApiImplicitParam(dataTypeClass = String.class, name = "title", paramType = "query",value = "标题"),
  95. @ApiImplicitParam(dataTypeClass = String.class, name = "isEnlist", paramType = "query",value = "是否报名"),
  96. @ApiImplicitParam(dataTypeClass = String.class, name = "time", paramType = "query",value = "日期")
  97. })
  98. @RequestMapping(value = "/admin/iBuildingDynamicList", method = RequestMethod.GET)
  99. public ResponseBean iBuildingDynamicList(@RequestParam("pageNum")Integer pageNum,
  100. @RequestParam("pageSize")Integer pageSize,
  101. @RequestParam(required = false)String name,
  102. @RequestParam(required = false)Integer cityId,
  103. @RequestParam(required = false)String buildingId,
  104. @RequestParam(required = false)String title,
  105. @RequestParam(required = false)String isEnlist,
  106. @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime time,HttpServletRequest request){
  107. ResponseBean responseBean = iBuildingDynamicService.iBuildingDynamicList(pageNum,pageSize,name,buildingId,cityId,isEnlist,time,title,getOrgId(request));
  108. return responseBean;
  109. }
  110. @RequestMapping(value = "/admin/iBuildingDynamicSelectId/{id}", method = RequestMethod.GET)
  111. public ResponseBean iBuildingDynamicSelectId(@PathVariable(value = "id") String id, HttpSession session){
  112. ResponseBean responseBean = iBuildingDynamicService.iBuildingDynamicSelectId(id);
  113. return responseBean;
  114. }
  115. /**
  116. * 活动列表
  117. * @param pageNumber
  118. * @param pageSize
  119. * @param request
  120. * @return
  121. */
  122. @ApiOperation(value = "微信端查询项目活动列表", notes = "微信端查询项目活动列表")
  123. @ApiImplicitParams({
  124. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageNum", paramType = "query",value = "第几页"),
  125. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageSize", paramType = "query",value = "一页多少行"),
  126. @ApiImplicitParam(dataTypeClass = Integer.class, name = "cityId", paramType = "query",value = "城市id"),
  127. @ApiImplicitParam(dataTypeClass = String.class, name = "buildingId", paramType = "query",value = "项目id"),
  128. @ApiImplicitParam(dataTypeClass = Boolean.class, name = "mine", paramType = "query")
  129. })
  130. @RequestMapping(value = "/wx/buildingDynamiceList", method = RequestMethod.GET)
  131. public ResponseBean wxBuildingDynamiceList(@RequestParam(value = "buildingId", required = false)String buildingId,
  132. @RequestParam(value = "pageNumber",defaultValue = "1")Integer pageNumber,
  133. @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize,
  134. @RequestParam(defaultValue = "false" )boolean mine,
  135. @RequestParam(value = "cityId", required = false)Integer cityId,
  136. HttpServletRequest request){
  137. String openid = getOpenId(request);
  138. Integer orgId = getOrgId(request);
  139. ResponseBean responseBean = new ResponseBean();
  140. if(mine){
  141. List<TaPerson> taPersons = taPersonService.getPersonsByOpenId(openid);
  142. if (null == taPersons || taPersons.size() != 1) {
  143. return responseBean.error("验证人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  144. }
  145. TaPerson person = taPersons.get(0);
  146. responseBean.addSuccess(iBuildingDynamicService.getJoinedActivity(pageNumber,pageSize,"",person,orgId));
  147. }else {
  148. responseBean = iBuildingDynamicService.getWxBuildingDynamiceList(pageNumber,pageSize,buildingId,openid,cityId,orgId);
  149. }
  150. return responseBean;
  151. }
  152. @ApiOperation(value = "微信端查询收藏项目活动列表", notes = "微信端查询收藏项目活动列表")
  153. @ApiImplicitParams({
  154. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageNum", paramType = "query",value = "第几页"),
  155. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageSize", paramType = "query",value = "一页多少行"),
  156. @ApiImplicitParam(dataTypeClass = String.class, name = "buildingId", paramType = "query",value = "项目id")
  157. })
  158. @RequestMapping(value = "/wx/save/buildingDynamiceList", method = RequestMethod.GET)
  159. public ResponseBean wxSaveBuildingDynamiceList(@RequestParam(value = "buildingId", required = false)String buildingId,
  160. @RequestParam(value = "pageNumber",defaultValue = "1")Integer pageNumber,
  161. @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize,
  162. HttpServletRequest request){
  163. String openid = getOpenId(request);
  164. ResponseBean responseBean = new ResponseBean();
  165. List<TaPerson> taPersons = taPersonService.getPersonsByOpenId(openid);
  166. if (null == taPersons || taPersons.size() != 1) {
  167. return responseBean.error("验证人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  168. }
  169. TaPerson person = taPersons.get(0);
  170. QueryWrapper<TaSave> saveQueryWrapper = new QueryWrapper<>();
  171. saveQueryWrapper.eq("person_id",person.getPersonId());
  172. saveQueryWrapper.eq("tagert_type", CommConstant.FAVOR_ACTIVITY);
  173. List<TaSave> saveList = taSaveService.list(saveQueryWrapper);
  174. if(saveList.size()>0){
  175. List<String> ids = new ArrayList<>();
  176. for(int i = 0; i<saveList.size();i++){
  177. ids.add(saveList.get(i).getSavedTarget());
  178. }
  179. IPage<TaBuildingDynamic> page = new Page<>(pageNumber, pageSize);
  180. QueryWrapper<TaBuildingDynamic> buildingDynamicQueryWrapper = new QueryWrapper<>();
  181. buildingDynamicQueryWrapper.in("dynamic_id",ids);
  182. IPage<TaBuildingDynamic> buildingDynamicIPage = iBuildingDynamicService.page(page,buildingDynamicQueryWrapper);
  183. //查询是否报名了普通活动
  184. QueryWrapper<TaActivityDynamicEnlist> queryWrapper = new QueryWrapper<>();
  185. queryWrapper.eq("org_id",getOrgId(request));
  186. queryWrapper.eq("person_id",person.getPersonId());
  187. List<TaActivityDynamicEnlist> taActivityDynamicEnlists = taActivityDynamicEnlistMapper.selectList(queryWrapper);
  188. for(int j=0;j<buildingDynamicIPage.getRecords().size();j++){
  189. iBuildingDynamicService.setExtendInfo(buildingDynamicIPage.getRecords().get(j),person);
  190. //是否已参与状态
  191. TaBuildingDynamic taBuildingDynamic = buildingDynamicIPage.getRecords().get(j);
  192. taActivityDynamicEnlists.forEach(dynamic -> {
  193. if (taBuildingDynamic.getDynamicId().equals(dynamic.getDynamicId())){
  194. taBuildingDynamic.setActivityStatus(CommConstant.ACTIVITY_STATUS_PARTNER);
  195. }
  196. });
  197. }
  198. responseBean.addSuccess(buildingDynamicIPage);
  199. }else {
  200. responseBean.addSuccess("暂无收藏活动");
  201. }
  202. return responseBean;
  203. }
  204. /**
  205. * 活动详情
  206. * @param dynamicId
  207. * @return
  208. */
  209. @ApiOperation(value = "微信端查询活动详情", notes = "微信端查询活动详情")
  210. @ApiImplicitParams({
  211. @ApiImplicitParam(dataTypeClass = String.class, name = "dynamicId", paramType = "path",value = "活动ID")
  212. })
  213. @RequestMapping(value = "/wx/buildingDynamiceInfo/{dynamicId}", method = RequestMethod.GET)
  214. public ResponseBean iBuildingDynamicInfo(@PathVariable(value = "dynamicId") String dynamicId,
  215. HttpServletRequest request){
  216. String openid = getOpenId(request);
  217. Integer orgId = getOrgId(request);
  218. String buildingId = "";
  219. ResponseBean responseBean = iBuildingDynamicService.getWxBuildingDynamiceInfo(dynamicId,buildingId,openid, orgId);
  220. return responseBean;
  221. }
  222. /**
  223. * 活动详情
  224. * @param dynamicId
  225. * @return
  226. */
  227. @ApiOperation(value = "微信端查询活报名动详情", notes = "微信端查询活报名动详情")
  228. @ApiImplicitParams({
  229. @ApiImplicitParam(dataTypeClass = String.class, name = "dynamicId", paramType = "path",value = "活动ID")
  230. })
  231. @RequestMapping(value = "/wx/buildingDynamiceEnlistInfo/{dynamicId}", method = RequestMethod.GET)
  232. public ResponseBean iBuildingDynamicEnlistInfo(@PathVariable(value = "dynamicId") String dynamicId,
  233. HttpServletRequest request){
  234. ResponseBean responseBean = new ResponseBean();
  235. String openid = getOpenId(request);
  236. List<TaPerson> taPersons = taPersonService.getPersonsByOpenId(openid);
  237. if (null == taPersons || taPersons.size() != 1) {
  238. return responseBean.error("验证人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  239. }
  240. TaPerson person = taPersons.get(0);
  241. Integer orgId = getOrgId(request);
  242. QueryWrapper<TaActivityDynamicEnlist>enlistQueryWrapper = new QueryWrapper<>();
  243. enlistQueryWrapper.eq("dynamic_id",dynamicId);
  244. enlistQueryWrapper.eq("person_id",person.getPersonId());
  245. enlistQueryWrapper.eq("org_id",orgId);
  246. List <TaActivityDynamicEnlist> enlists = taActivityDynamicEnlistMapper.selectList(enlistQueryWrapper);
  247. TaBuildingDynamic buildingDynamic = iBuildingDynamicService.getById(dynamicId);
  248. Map<String,Object>data = new HashMap<>();
  249. TaActivityDynamicEnlist enlist = new TaActivityDynamicEnlist();
  250. if(enlists.size()>0){
  251. enlist = enlists.get(0);
  252. }
  253. data.put("enlist",enlist);
  254. data.put("dynamic",buildingDynamic);
  255. data.put("person",person);
  256. responseBean.addSuccess(data);
  257. return responseBean;
  258. }
  259. /**
  260. * 活动签到
  261. * @param enlistId
  262. * @return
  263. */
  264. @ApiOperation(value = "微信端活动签到", notes = "微信端活动签到")
  265. @ApiImplicitParams({
  266. @ApiImplicitParam(dataTypeClass = Integer.class, name = "enlistId", paramType = "path",value = "活动报名ID")
  267. })
  268. @RequestMapping(value = "/wx/buildingDynamicCheckin/{enlistId}", method = RequestMethod.PUT)
  269. public ResponseBean iBuildingDynamicCheckin(@PathVariable(value = "enlistId") String enlistId,
  270. HttpServletRequest request){
  271. ResponseBean responseBean =new ResponseBean();
  272. TaActivityDynamicEnlist enlist = taActivityDynamicEnlistMapper.selectById(enlistId);
  273. try{
  274. if(null != enlist){
  275. Integer tempIsCheckin = enlist.getIsCheckin();
  276. enlist.setIsCheckin(CommConstant.STATUS_NORMAL);
  277. if(taActivityDynamicEnlistMapper.updateById(enlist)>0){
  278. if (tempIsCheckin.intValue() == CommConstant.STATUS_UNACCALIMED.intValue()){
  279. enlist.setEnlistId(Integer.valueOf(enlistId));
  280. applicationContext.publishEvent(new EventBus(enlist,ActivityCheckin,getOrgId(request)));
  281. Integer rulePoints = taPointsRecordsService.getRulePoints(CommConstant.POINTS_CHANGE_ACTIVITY_CHECKIN, getOrgId(request));
  282. enlist.setAddPoints(rulePoints);
  283. responseBean.addSuccess(enlist);
  284. }else {
  285. responseBean.addError("您已签到过");
  286. }
  287. }else {
  288. responseBean.addError("签到失败");
  289. }
  290. }
  291. }catch (Exception e){
  292. e.printStackTrace();
  293. responseBean.addError("签到异常");
  294. }
  295. return responseBean;
  296. }
  297. /**
  298. * 添加活动报名
  299. * @param taActivityDynamicEnlist
  300. * @param request
  301. * @return
  302. */
  303. @ApiOperation(value = "微信端添加活动报名", notes = "微信端添加活动报名")
  304. @ApiImplicitParams({
  305. @ApiImplicitParam(dataType = "TaActivityDynamicEnlist", name = "taActivityDynamicEnlist", paramType = "body",value = "")
  306. })
  307. @RequestMapping(value = "/wx/activityDynamicEnlistAdd", method = RequestMethod.POST)
  308. public ResponseBean taActivityDynamicEnlist(@RequestBody TaActivityDynamicEnlist taActivityDynamicEnlist,
  309. HttpServletRequest request){
  310. String openid = getOpenId(request);
  311. Integer orgId = getOrgId(request);
  312. List<TaPerson> taPersons = taPersonService.getPersonsByOpenId(openid);
  313. if (null == taPersons || taPersons.size() != 1) {
  314. return ResponseBean.error("验证人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  315. }
  316. TaBuildingDynamic buildingDynamic = iBuildingDynamicService.getById(taActivityDynamicEnlist.getDynamicId());
  317. // TODO 看代码里面是 is_enlist = 1 才是允许报名
  318. if (buildingDynamic.getIsEnlist().intValue() != 1) {
  319. return ResponseBean.error("活动不允许报名", ResponseBean.ERROR_UNAVAILABLE);
  320. }
  321. // 携带的报名人数(是已经包括自己了),不能超过活动总人数
  322. // 检验 个人最大报名人数
  323. if (taActivityDynamicEnlist.getAttendNum() > buildingDynamic.getMaxEnlistByPerson().intValue()) {
  324. return ResponseBean.error("报名失败,超过活动报名的个人最大报名人数!", ResponseBean.ERROR_UNAVAILABLE);
  325. }
  326. // 当前活动已报名的总人数
  327. Integer enlistCount = taActivityDynamicEnlistMapper.selectEnlistCount(taActivityDynamicEnlist.getDynamicId(), orgId);
  328. if ((enlistCount + taActivityDynamicEnlist.getAttendNum()) > buildingDynamic.getPersonNum().intValue()) {
  329. return ResponseBean.error("报名失败,超过活动报名的最大人数!", ResponseBean.ERROR_UNAVAILABLE);
  330. }
  331. TaPerson person = taPersons.get(0);
  332. // 反向更新TaSharePersonFrom 的 status
  333. QueryWrapper<TaSharePersonFrom> queryWrapper = new QueryWrapper<>();
  334. queryWrapper.eq("target_id", taActivityDynamicEnlist.getDynamicId());
  335. queryWrapper.eq("target_type", "dynamic_share");
  336. queryWrapper.eq("person_id", person.getPersonId());
  337. queryWrapper.orderByDesc("create_date");
  338. queryWrapper.last("limit 1");
  339. TaSharePersonFrom taSharePersonFrom = taSharePersonFromMapper.selectOne(queryWrapper);
  340. if (null != taSharePersonFrom) {
  341. taSharePersonFrom.setStatus(1);
  342. taSharePersonFromMapper.updateById(taSharePersonFrom);
  343. }
  344. taActivityDynamicEnlist.setPersonId(person.getPersonId());
  345. taActivityDynamicEnlist.setOrgId(orgId);
  346. taActivityDynamicEnlist.setIsCheckin(CommConstant.STATUS_UNACCALIMED);
  347. ResponseBean responseBean = iBuildingDynamicService.taActivityDynamicEnlistAdd(taActivityDynamicEnlist, orgId);
  348. return responseBean;
  349. }
  350. @ApiOperation(value = "后端活动添加", notes = "后端活动添加")
  351. @ApiImplicitParams({
  352. @ApiImplicitParam(dataType = "TaBuildingDynamic", name = "parameter", paramType = "body",value = "活动详细信息")
  353. })
  354. @RequestMapping(value = "/admin/buildingDynamic/add" ,method =RequestMethod.POST)
  355. public ResponseBean buildingDynamicAdd(@RequestBody String parameter,HttpServletRequest request){
  356. ResponseBean responseBean = new ResponseBean();
  357. TaBuildingDynamic dynamic = JSONObject.parseObject(parameter, TaBuildingDynamic.class);
  358. dynamic.setOrgId(getOrgId(request));
  359. Integer cityId = iTaBuildingService.getCityById(dynamic.getBuildingId());
  360. dynamic.setCityId(cityId);
  361. //发布状态
  362. dynamic.setStatus(0);
  363. //活动状态
  364. dynamic.setActivityStatus(1);
  365. // dynamic.setDynamicId(idGen.nextId()+"");
  366. dynamic.setPublishDate(LocalDateTime.now());
  367. dynamic.setCreateDate(LocalDateTime.now());
  368. // 根据ORGID查询当前小程序表的miniapp_id
  369. QueryWrapper<TaMiniapp> taMiniappQuery= new QueryWrapper<>();
  370. taMiniappQuery.eq("org_id",getOrgId(request));
  371. TaMiniapp taMiniapp = taMiniappMapper.selectOne(taMiniappQuery);
  372. iBuildingDynamicService.save(dynamic);
  373. // 生成二维码
  374. ResponseBean taMiniappQrcode = miniAppService.getQrCode(CommConstant.ACTIVITY_QRCODE.replace("#0",dynamic.getDynamicId()).replace("#1","activity"),taMiniapp.getMiniappId());
  375. dynamic.setQrCode(String.valueOf(taMiniappQrcode.getData()));
  376. iBuildingDynamicService.updateById(dynamic);
  377. responseBean.addSuccess(dynamic);
  378. return responseBean;
  379. }
  380. @ApiOperation(value = "后端活动更新", notes = "后端微信活动更新")
  381. @ApiImplicitParams({
  382. @ApiImplicitParam(dataType = "TaBuildingDynamic", name = "parameter", paramType = "body",value = "活动详细信息")
  383. })
  384. @RequestMapping(value = "/admin/buildingDynamic/update" ,method =RequestMethod.PUT)
  385. public ResponseBean buildingDynamicUpdate(@RequestBody String parameter,HttpServletRequest request){
  386. ResponseBean responseBean = new ResponseBean();
  387. TaBuildingDynamic dynamic = JSONObject.parseObject(parameter, TaBuildingDynamic.class);
  388. dynamic.setOrgId(getOrgId(request));
  389. QueryWrapper<TaBuildingDynamic> buildingDynamicQueryWrapper = new QueryWrapper<>();
  390. Integer cityId = iTaBuildingService.getCityById(dynamic.getBuildingId());
  391. dynamic.setCityId(cityId);
  392. buildingDynamicQueryWrapper.eq("dynamic_id", dynamic.getDynamicId());
  393. iBuildingDynamicService.update(dynamic, buildingDynamicQueryWrapper);
  394. return responseBean;
  395. }
  396. @ApiOperation(value = "后端置顶", notes = "后端置顶")
  397. @ApiImplicitParams({
  398. @ApiImplicitParam(dataType = "String", name = "dynamicId", paramType = "query",value = "活动ID"),
  399. @ApiImplicitParam(dataType = "Integer", name = "weight", paramType = "query",value = "权重")
  400. })
  401. @RequestMapping(value = "/admin/buildingDynamic/weight" ,method =RequestMethod.PUT)
  402. public ResponseBean buildingDynamicWeight(@RequestParam String dynamicId,@RequestParam Integer weight,HttpServletRequest request){
  403. ResponseBean responseBean = new ResponseBean();
  404. TaBuildingDynamic dynamic = iBuildingDynamicService.getById(dynamicId);
  405. dynamic.setWeight(weight);
  406. dynamic.setOrgId(getOrgId(request));
  407. QueryWrapper<TaBuildingDynamic> dynamicQueryWrapper = new QueryWrapper<>();
  408. dynamicQueryWrapper.eq("dynamic_id",dynamic);
  409. if (iBuildingDynamicService.updateById(dynamic)){
  410. responseBean.addSuccess("成功");
  411. }else {
  412. responseBean.addError("失败");
  413. }
  414. return responseBean;
  415. }
  416. @ApiOperation(value = "后端删除", notes = "后端删除")
  417. @ApiImplicitParams({
  418. @ApiImplicitParam(dataType = "String", name = "id", paramType = "query",value = "活动ID")
  419. })
  420. @RequestMapping(value = "/admin/buildingDynamic/delete", method = RequestMethod.DELETE)
  421. public ResponseBean buildingDynamicdelect(@RequestParam(value = "id",required = false)String id) {
  422. ResponseBean responseBean = iBuildingDynamicService.buildingDynamicDelete(id);
  423. return responseBean;
  424. }
  425. @ApiOperation(value = "后端发布活动", notes = "后端发布活动")
  426. @ApiImplicitParams({
  427. @ApiImplicitParam(dataType = "String", name = "dynamicId", paramType = "path",value = "活动ID")
  428. })
  429. @RequestMapping(value = "/admin/buildingDynamic/send/{dynamicId}", method = RequestMethod.PUT)
  430. public ResponseBean send(@PathVariable String dynamicId, HttpServletRequest request) {
  431. ResponseBean responseBean = new ResponseBean();
  432. QueryWrapper<TaBuildingDynamic> dynamicQueryWrapper = new QueryWrapper<>();
  433. dynamicQueryWrapper.eq("dynamic_id", dynamicId);
  434. TaBuildingDynamic dynamic = iBuildingDynamicService.getOne(dynamicQueryWrapper);
  435. dynamic.setStatus(1);
  436. dynamic.setPublishDate(LocalDateTime.now());
  437. dynamic.setOrgId(getOrgId(request));
  438. iBuildingDynamicService.update(dynamic, dynamicQueryWrapper);
  439. return responseBean;
  440. }
  441. @ApiOperation(value = "后端取消活动", notes = "后端取消活动")
  442. @ApiImplicitParams({
  443. @ApiImplicitParam(dataType = "String", name = "dynamicId", paramType = "path",value = "活动ID")
  444. })
  445. @RequestMapping(value = "/admin/buildingDynamic/cancel/{dynamicId}", method = RequestMethod.PUT)
  446. public ResponseBean cancel(@PathVariable String dynamicId, HttpServletRequest request) {
  447. ResponseBean responseBean = new ResponseBean();
  448. QueryWrapper<TaBuildingDynamic> dynamicQueryWrapper = new QueryWrapper<>();
  449. dynamicQueryWrapper.eq("dynamic_id", dynamicId);
  450. TaBuildingDynamic dynamic = iBuildingDynamicService.getOne(dynamicQueryWrapper);
  451. dynamic.setStatus(0);
  452. dynamic.setOrgId(getOrgId(request));
  453. iBuildingDynamicService.update(dynamic, dynamicQueryWrapper);
  454. return responseBean;
  455. }
  456. @ApiOperation(value = "后端活动详情", notes = "后端活动详情")
  457. @ApiImplicitParams({
  458. @ApiImplicitParam(dataType = "String", name = "dynamicId", paramType = "query",value = "活动ID")
  459. })
  460. @RequestMapping(value = "/admin/buildingDynamic/Details", method = RequestMethod.GET)
  461. public ResponseBean buildingDynamicDetails(@RequestParam("dynamicId")String dynamicId) {
  462. ResponseBean responseBean = new ResponseBean();
  463. QueryWrapper<TaBuildingDynamic> dynamicQueryWrapper = new QueryWrapper<>();
  464. dynamicQueryWrapper.eq("dynamic_id", dynamicId);
  465. TaBuildingDynamic dynamic = iBuildingDynamicService.getOne(dynamicQueryWrapper);
  466. TaBuilding building= taBuildingMapper.selectBuilding(dynamic.getBuildingId());
  467. if (null != building) {
  468. dynamic.setBuildingName(building.getBuildingName());
  469. }
  470. responseBean.addSuccess(dynamic);
  471. return responseBean;
  472. }
  473. @ApiOperation(value = "后端报名列表", notes = "后端报名列表")
  474. @ApiImplicitParams({
  475. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageNum", paramType = "query",value = "第几页"),
  476. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageSize", paramType = "query",value = "一页多少行"),
  477. @ApiImplicitParam(dataType = "String", name = "dynamicId", paramType = "query",value = "活动ID"),
  478. @ApiImplicitParam(dataType = "String", name = "isCheckin", paramType = "query",value = "0未签到1签到"),
  479. @ApiImplicitParam(dataType = "String", name = "name", paramType = "query",value = "用户姓名"),
  480. @ApiImplicitParam(dataType = "String", name = "phone", paramType = "query",value = "手机号")
  481. })
  482. @RequestMapping(value = "/admin/SignList", method = RequestMethod.GET)
  483. public ResponseBean getSignList(@RequestParam(value = "pageNum",defaultValue = "1")Integer pageNum,
  484. @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize,
  485. @RequestParam(value = "dynamicId",required = false)String dynamicId,
  486. @RequestParam(value = "isCheckin",required = false)String isCheckin,
  487. @RequestParam(value = "name",required = false)String name,
  488. @RequestParam(value = "phone",required = false)String phone,
  489. HttpServletRequest request) {
  490. Page<TaActivityDynamicEnlist> page = new Page<>();
  491. page.setSize(pageSize);
  492. page.setCurrent(pageNum);
  493. ResponseBean signList = iBuildingDynamicService.signList(page,dynamicId, getOrgId(request),isCheckin,name,phone);
  494. HashMap<String, Object> map = new HashMap<>();
  495. map.put("list", signList);
  496. map.put("total", page.getTotal());
  497. map.put("pageNum", page.getCurrent());
  498. map.put("pageSize", page.getSize());
  499. return ResponseBean.success(map);
  500. }
  501. @ApiOperation(value = "后端结束活动", notes = "后端结束活动")
  502. @ApiImplicitParams({
  503. @ApiImplicitParam(dataType = "String", name = "parameter", paramType = "body",value = "活动ID dynamicId 和 top")
  504. })
  505. @RequestMapping(value = "/admin/buildingDynamic/finish" ,method =RequestMethod.PUT)
  506. public ResponseBean buildingDynamicFinish(@RequestBody String parameter) {
  507. ResponseBean responseBean = new ResponseBean();
  508. JSONObject object = JSONObject.parseObject(parameter);
  509. String dynamicId = object.getString("dynamicId");
  510. String top = object.getString("top");
  511. QueryWrapper<TaBuildingDynamic> taBuildingDynamic = new QueryWrapper<>();
  512. taBuildingDynamic.eq("dynamic_id", dynamicId);
  513. TaBuildingDynamic dynamic = iBuildingDynamicService.getOne(taBuildingDynamic);
  514. if ("1".equals(top)) {
  515. dynamic.setCreateDate(LocalDateTime.now());
  516. } else {
  517. dynamic.setIsEnlist(0);
  518. dynamic.setActivityStatus(2);
  519. }
  520. iBuildingDynamicService.update(dynamic, taBuildingDynamic);
  521. responseBean.addSuccess("成功");
  522. return responseBean;
  523. }
  524. /**
  525. * 报名记录导出
  526. *
  527. * @param request
  528. * @param response
  529. * @throws IOException
  530. */
  531. @GetMapping("/admin/activityDynamicEnlist/export")
  532. public void activityDynamicEnlistExport(HttpServletRequest request,
  533. HttpServletResponse response,
  534. @RequestParam(value = "dynamicId",required = false)String dynamicId,
  535. @RequestParam(value = "isCheckin",required = false)String isCheckin,
  536. @RequestParam(value = "name",required = false)String name,
  537. @RequestParam(value = "phone",required = false)String phone) throws IOException {
  538. // response.setContentType("application/vnd.ms-excel");
  539. response.setContentType("application/octet-stream");
  540. response.setCharacterEncoding("utf-8");
  541. response.setHeader("Content-disposition", "attachment;filename=助力活动发起人.xlsx");
  542. Integer orgId = getOrgId(request);
  543. Integer pageCode = 0;
  544. Integer pageSize = 100;
  545. // 总页数
  546. Integer pageCount = 0;
  547. ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), TaActivityDynamicEnlistExport.class).registerWriteHandler(new CustomCellWriteHandler()).build();
  548. // 设置 sheet, 同一个sheet只需要设置一次
  549. WriteSheet writeSheet = EasyExcel.writerSheet("报名记录").build();
  550. Integer count = iBuildingDynamicService.getTaActivityDynamicEnlist(dynamicId,isCheckin,name,phone);
  551. pageCount = count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1;
  552. List<HelpInitiateRecordSucceed> publicList = null;
  553. do {
  554. publicList = iBuildingDynamicService.getTaActivityDynamicEnlistExport(pageCode * pageSize, pageSize,dynamicId,isCheckin,name,phone,getOrgId(request));
  555. excelWriter.write(publicList, writeSheet);
  556. pageCode++;
  557. } while (pageCode <= pageCount);
  558. // finish 会帮忙关闭流
  559. excelWriter.finish();
  560. }
  561. }