ActivityHandler.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. package com.iamberry.wechat.handles.activity;
  2. import com.iamberry.wechat.core.entity.ResultMsg;
  3. import com.iamberry.wechat.core.entity.WechatUtils;
  4. import com.iamberry.wechat.core.entity.activity.Activity;
  5. import com.iamberry.wechat.core.entity.activity.ActivityHelp;
  6. import com.iamberry.wechat.core.entity.member.Member;
  7. import com.iamberry.wechat.core.entity.wx.QRCJson;
  8. import com.iamberry.wechat.face.activity.ActivityHelpService;
  9. import com.iamberry.wechat.face.activity.ActivityService;
  10. import com.iamberry.wechat.face.admin.SystemService;
  11. import com.iamberry.wechat.face.coupon.CouponItemService;
  12. import com.iamberry.wechat.face.member.MemberService;
  13. import com.iamberry.wechat.file.FileUtils;
  14. import com.iamberry.wechat.tools.*;
  15. import com.iamberry.wechat.utils.DownloadWXCodeUtil;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import org.springframework.web.bind.annotation.ResponseBody;
  20. import javax.servlet.http.HttpServletRequest;
  21. import java.awt.*;
  22. import java.io.File;
  23. import java.text.SimpleDateFormat;
  24. import java.util.Date;
  25. import java.util.List;
  26. /**
  27. * @author wxm
  28. * Class Description: 618活动
  29. */
  30. @Controller
  31. @RequestMapping("/wechat/activity")
  32. public class ActivityHandler {
  33. private static String ditupath = "";
  34. @Autowired
  35. private MemberService memberService;
  36. @Autowired
  37. private ActivityService activityService;
  38. @Autowired
  39. private ActivityHelpService activityHelpService;
  40. @Autowired
  41. private PosterNumUtils posterNumUtils;
  42. @Autowired
  43. private SystemService systemService;
  44. @Autowired
  45. private CouponItemService couponItemService;
  46. /**
  47. * 进入活动页面判断该用户是否可以参加
  48. * @param req
  49. * @return
  50. */
  51. @ResponseBody
  52. @RequestMapping("/to_activity")
  53. public ResultMsg toActivity(HttpServletRequest req){
  54. ResultMsg rm = ResultMsg.getSuccess();
  55. Member member = WechatUtils.getUserBySession(req);
  56. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  57. /*不能参与*/
  58. if(member.getUserIdentity() == 2 ){ //1:会员 2:微信用户
  59. rm = ResultMsg.getError();
  60. rm.setMessage("此活动仅限soodo上朵会员参与,请购买并注册后参与");
  61. rm.addData("member",member);
  62. return rm;
  63. }
  64. /*未参与过的*/
  65. Activity activity = new Activity();
  66. activity.setUserOpenId(member.getUserOpenid());
  67. List<Activity> activityList = activityService.getActivityList(activity);
  68. if(activityList == null || activityList.size() < 1){
  69. rm.addData("status",-1);
  70. rm.addData("member",member);
  71. rm.addData("msg","未参与,请点击立即参与");
  72. return rm;
  73. }
  74. activity = activityList.get(0);
  75. ActivityHelp activityHelp = new ActivityHelp();
  76. activityHelp.setActivityId(activity.getActivityId());
  77. List<ActivityHelp> activityHelpList = activityHelpService.getActivityHelpList(activityHelp);
  78. //状态:1:助力中 2:助力成功 3:已领取优惠券 4:取消
  79. if(activity.getActivityStatus() == 1){
  80. /*参与中的*/
  81. rm.addData("status",1);
  82. rm.addData("msg","正在助力中");
  83. rm.addData("member",member);
  84. rm.addData("activity",activity);
  85. rm.addData("activityHelpList",activityHelpList);
  86. return rm;
  87. }else if(activity.getActivityStatus() == 2){
  88. /*已成功*/
  89. rm.addData("status",2);
  90. rm.addData("msg","助力成功");
  91. rm.addData("member",member);
  92. rm.addData("activity",activity);
  93. rm.addData("activityHelpList",activityHelpList);
  94. return rm;
  95. }else if(activity.getActivityStatus() == 3){
  96. /*已领取*/
  97. rm.addData("status",3);
  98. rm.addData("msg","已领取优惠券");
  99. rm.addData("member",member);
  100. rm.addData("activity",activity);
  101. rm.addData("activityHelpList",activityHelpList);
  102. return rm;
  103. }else{
  104. rm = ResultMsg.getError();
  105. rm.setMessage("查询失败,请重试");
  106. return rm;
  107. }
  108. }
  109. /**
  110. * 参与活动
  111. * @param req
  112. * @return
  113. */
  114. @ResponseBody
  115. @RequestMapping("/participate_activity")
  116. public synchronized ResultMsg getColorPatterns(HttpServletRequest req){
  117. long start = new Date().getTime();
  118. ResultMsg rm = ResultMsg.getSuccess();
  119. Member member = WechatUtils.getUserBySession(req);
  120. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  121. /*不能参与*/
  122. if(member.getUserIdentity() == 2 ){ //1:会员 2:微信用户
  123. rm = ResultMsg.getError();
  124. rm.setMessage("此活动仅限soodo上朵会员参与,请购买并注册后参与");
  125. return rm;
  126. }
  127. /*未参与过的*/
  128. Activity activity = new Activity();
  129. activity.setUserOpenId(member.getUserOpenid());
  130. List<Activity> activityList = activityService.getActivityList(activity);
  131. if(activityList == null || activityList.size() < 1){
  132. String dataStaing = new SimpleDateFormat("yyyyMMdd").format(new Date());
  133. String codePath = posterNumUtils.IMG_PATH + dataStaing + "/";
  134. String filePath = req.getSession().getServletContext().getRealPath("/") + codePath ;
  135. ditupath = req.getSession().getServletContext().getRealPath("/") + PosterNumUtils.OLD_IMG_PATH;
  136. String name = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
  137. // 生成文件名
  138. String codeName = name + "Code.png";
  139. String headName = name + "Head.png";
  140. String imgName = name + ".png";
  141. boolean flag = generatePoster(member,filePath,codeName,imgName,headName);
  142. if(!flag){
  143. rm = ResultMsg.getError();
  144. rm.setMessage("生成图片失败");
  145. return rm;
  146. }
  147. String codeImgPath = codePath + codeName;
  148. String imgPath = codePath + imgName;
  149. String element = systemService.selectOneShopRuleById(257).getRuleDesc();
  150. Integer num = Integer.valueOf(element);
  151. if(num == 0){
  152. num =10;
  153. }
  154. activity.setActivityAllHelp(num);
  155. activity.setActivityCodeImg(codeImgPath);
  156. activity.setActivityImg(imgPath);
  157. activity.setActivityStatus(1);
  158. List<Activity> acList = activityService.getActivityList(activity);
  159. Integer f = 0;
  160. if(acList==null || acList.size() < 1 ){
  161. f = activityService.save(activity);
  162. }
  163. long end = new Date().getTime();
  164. System.out.println("生成时间为:"+ (end-start));
  165. if(f < 1){
  166. return rm;
  167. }else{
  168. rm = ResultMsg.getSuccess();
  169. rm.addData("imgPath",imgPath);
  170. return rm;
  171. }
  172. }else{
  173. rm = ResultMsg.getError();
  174. rm.setMessage("已参与助力活动");
  175. return rm;
  176. }
  177. }
  178. /**
  179. * 获取活动信息
  180. * @param req
  181. * @return
  182. */
  183. @ResponseBody
  184. @RequestMapping("/get_activity")
  185. public ResultMsg getActivity(HttpServletRequest req){
  186. ResultMsg rm = ResultMsg.getSuccess();
  187. Member member = WechatUtils.getUserBySession(req);
  188. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  189. /*未参与过的*/
  190. Activity activity = new Activity();
  191. activity.setUserOpenId(member.getUserOpenid());
  192. List<Activity> activityList = activityService.getActivityList(activity);
  193. if(activityList != null && activityList.size() > 0){
  194. rm.addData("activity",activityList.get(0));
  195. return rm;
  196. }else{
  197. rm = ResultMsg.getError();
  198. rm.setMessage("未参与活动");
  199. return rm;
  200. }
  201. }
  202. /**
  203. * 生成海报
  204. * @param member
  205. * @param path 路径
  206. * @param codeName 二维码名称
  207. * @param imgName 图片名称
  208. * @param headName 头像名称
  209. * @return
  210. */
  211. public boolean generatePoster(Member member,String path,String codeName,String imgName,String headName){
  212. File imgfile = new File(path); //全路径
  213. if (!imgfile.exists()){
  214. imgfile.mkdirs();
  215. }
  216. String name = member.getUserNickname();
  217. if(name == null){
  218. name = "";
  219. }
  220. //生成机器二维码
  221. String json = String.format(NameUtils.QR_SCENE, 2592000, ResultInfo.barCodeActivity + member.getUserOpenid());
  222. QRCJson qrc = WeixinUtil.createQrcode(json);
  223. try {
  224. /*下载二维码*/
  225. DownloadWXCodeUtil.downloadByNIO2(qrc.getUrl(),codeName,path,PosterNumUtils.CODE_WIDTH,PosterNumUtils.CODE_HEIGHT,false);
  226. DownloadWXCodeUtil.downloadByNIO2(member.getUserHead(),headName,path,PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT,true);
  227. /*海报位置*/
  228. String newImg = path+imgName;
  229. /*二维码位置*/
  230. String codeImg = path + codeName;
  231. /*头像位置*/
  232. String headImg = path + headName;
  233. /*复制海报*/ //common/images/activity/ditu.jpg
  234. FileUtils.copyFile(ditupath,newImg);
  235. /*添加文字*/
  236. ImageUtils.pressPost(newImg,
  237. headImg,PosterNumUtils.HEAD_X,PosterNumUtils.HEAD_Y,
  238. codeImg,PosterNumUtils.CODE_X,PosterNumUtils.CODE_Y,
  239. name,PosterNumUtils.TEXT_X,PosterNumUtils.TEXT_Y,Color.black,PosterNumUtils.TEXT_FONT_SIZE
  240. );
  241. /*添加文字*/
  242. // ImageUtils.pressImage(newImg,headImg,PosterNumUtils.HEAD_X,PosterNumUtils.HEAD_Y,1);
  243. // ImageUtils.pressImage(newImg,codeImg,PosterNumUtils.CODE_X,PosterNumUtils.CODE_Y,1);
  244. // ImageUtils.pressText(newImg,name,PosterNumUtils.TEXT_X,PosterNumUtils.TEXT_Y,Color.black,PosterNumUtils.TEXT_FONT_SIZE);
  245. } catch (Exception e) {
  246. e.printStackTrace();
  247. return false;
  248. }
  249. return true;
  250. }
  251. /**
  252. * 领取优惠券
  253. * @param req
  254. * @return
  255. */
  256. @ResponseBody
  257. @RequestMapping("/receive_coupon")
  258. public ResultMsg receiveCoupon(HttpServletRequest req){
  259. ResultMsg rm = ResultMsg.getSuccess();
  260. Member member = WechatUtils.getUserBySession(req);
  261. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  262. /*不能参与*/
  263. if(member.getUserIdentity() == 2 ){ //1:会员 2:微信用户
  264. rm = ResultMsg.getError();
  265. rm.setMessage("此活动仅限soodo上朵会员参与,请购买并注册后参与");
  266. return rm;
  267. }
  268. /*未参与过的*/
  269. Activity activity = new Activity();
  270. activity.setUserOpenId(member.getUserOpenid());
  271. List<Activity> activityList = activityService.getActivityList(activity);
  272. if(activityList != null && activityList.size() > 0){
  273. activity = activityList.get(0);
  274. if(activity.getActivityAlreadyHelp() >= activity.getActivityAllHelp() && activity.getActivityStatus()==2 ){
  275. activityService.update(activity);
  276. rm.setMessage("领取优惠券成功");
  277. return rm;
  278. }else{
  279. rm = ResultMsg.getError();
  280. rm.setMessage("领取失败");
  281. return rm;
  282. }
  283. }else{
  284. rm = ResultMsg.getError();
  285. rm.setMessage("领取失败");
  286. return rm;
  287. }
  288. }
  289. }