admin
2023-09-05 6c68cf469de71773039c2cca8498f35b80b2891b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
package com.yeshi.fanli.controller.client.lijin;
 
import com.google.gson.*;
import com.ks.vip.exception.LijinBalanceException;
import com.ks.vip.pojo.DO.UserLijinRecord;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.lijin.dto.LijinSendInfo;
import com.yeshi.fanli.lijin.manager.UserLijinMnager;
import com.yeshi.fanli.lijin.manager.UserLijinSendManager;
import com.yeshi.fanli.lijin.vo.LijinRecordVO;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.util.Constant;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.TimeUtil;
 
import javax.annotation.Resource;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
@Controller
@RequestMapping("api/v2/lijin/hongbao")
public class LijinHongBaoController {
 
    @Resource
    private UserLijinMnager userLijinMnager;
 
    @Resource
    private UserLijinSendManager userLijinSendManager;
 
    @Resource
    private ConfigService configService;
 
 
    /**
     * 获取红包
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping("getSendingHongBao")
    public void getSendingHongBao(AcceptData acceptData, Long uid, PrintWriter out) {
        LijinSendInfo lijinSendInfo = userLijinSendManager.getSendingLijinInfo(acceptData.getSystem(), acceptData.getDevice(), uid);
        if (lijinSendInfo == null) {
 // 暂时不发礼金了
//            userLijinSendManager.sendLijin(acceptData.getSystem(), acceptData.getDevice(), uid, new BigDecimal(10));
//            lijinSendInfo = userLijinSendManager.getSendingLijinInfo(acceptData.getSystem(), acceptData.getDevice(), uid);
        }
 
        //是否需要显示弹框
        String value = configService.getValue(ConfigKeyEnum.lijinSendNotify, acceptData.getSystem());
        if (!"1".equalsIgnoreCase(value)) {
            lijinSendInfo = null;
        }
 
        if (lijinSendInfo == null) {
            out.print(JsonUtil.loadFalseResult("无红包"));
            return;
        }
 
        //填充notify的值
        lijinSendInfo.setNotifyTitle("领取" + lijinSendInfo.getName());
        lijinSendInfo.setNotifySubtitle("限时福利,最低66.66元起");
 
 
        Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
 
            @Override
            public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
                return src == null ? new JsonPrimitive(0) : new JsonPrimitive(src.getTime());
            }
        }).create();
        out.print(JsonUtil.loadTrueResult(gson.toJson(lijinSendInfo)));
    }
 
 
    /**
     * 获取红包余额
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping("getHongBaoBalance")
    public void getHongBaoBalance(AcceptData acceptData, Long uid, PrintWriter out) {
        BigDecimal balance = userLijinMnager.getLijinBalance(uid);
        if (balance == null)
            balance = new BigDecimal(0);
        BigDecimal using = userLijinMnager.getUsingLijin(uid);
        if (using == null)
            using = new BigDecimal(0);
 
        String recordLink = configService.getValue(ConfigKeyEnum.lijinRecordLink, acceptData.getSystem());
        String ruleLink = configService.getValue(ConfigKeyEnum.lijinRuleLink, acceptData.getSystem());
        String courseLink = configService.getValue(ConfigKeyEnum.lijinCourseLink, acceptData.getSystem());
        JSONObject data = new JSONObject();
        data.put("balance", balance);
        data.put("using", using);
        data.put("recordLink", recordLink);
        data.put("ruleLink", ruleLink);
        data.put("courseLink", courseLink);
        out.print(JsonUtil.loadTrueResult(data));
    }
 
 
    /**
     * 获取红包记录
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping("getHongBaoRecordList")
    public void getHongBaoRecordList(AcceptData acceptData, Long uid, Integer type, int page, PrintWriter out) {
        List<UserLijinRecord> recordList = userLijinMnager.getLijinRecord(uid, type, page, Constant.PAGE_SIZE);
        List<LijinRecordVO> voList = new ArrayList<>();
        for (UserLijinRecord record : recordList) {
            LijinRecordVO vo = new LijinRecordVO();
            vo.setCreateTime(record.getCreateTime());
            vo.setMoney(record.getMoney());
            vo.setTitle(record.getTitle());
            vo.setType(record.getType());
            voList.add(vo);
        }
 
        Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
            @Override
            public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
                return src == null ? new JsonPrimitive("") : new JsonPrimitive(TimeUtil.getGernalTime(src.getTime(), "yyyy.MM.dd HH:mm:ss"));
            }
        }).create();
 
        long count = userLijinMnager.countLijinRecord(uid, type);
        JSONObject data = new JSONObject();
        data.put("count", count);
        data.put("list", gson.toJson(voList));
        out.print(JsonUtil.loadTrueResult(data));
    }
 
 
    @RequestMapping("recieveHongBao")
    public void recieveHongBao(AcceptData acceptData, Long uid, String id, PrintWriter out) {
        try {
            userLijinSendManager.initBalance(uid);
            LijinSendInfo lijinSendInfo = userLijinSendManager.recieveLijin(id, uid);
            JSONObject data = new JSONObject();
            data.put("url", configService.getValue(ConfigKeyEnum.lijinRecievedSuccessLink, acceptData.getSystem()).replace("{name}", lijinSendInfo.getName()).replace("{money}", lijinSendInfo.getMoney() + ""));
            out.print(JsonUtil.loadTrueResult(data));
            return;
        } catch (LijinBalanceException e) {
            if (e.getCode() == LijinBalanceException.CODE_NOT_INIT) {
                out.print(JsonUtil.loadFalseResult("领取失败,请稍后重试"));
                userLijinMnager.initBalance(uid);
            } else {
                out.print(JsonUtil.loadFalseResult(e.getMessage()));
            }
        } catch (Exception e) {
            out.print(JsonUtil.loadFalseResult(e.getMessage()));
        }
    }
 
 
}