Data_Guild.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. <?php
  2. namespace loyalsoft;
  3. /**
  4. * 公会数据结构
  5. */
  6. class Data_Guild extends HashSaver {
  7. /**
  8. * 公会的ID
  9. * @var int
  10. */
  11. public $guildId;
  12. /**
  13. * 公会名称
  14. * @var string
  15. */
  16. public $name;
  17. /**
  18. * 公会的等级
  19. * @var int
  20. */
  21. public $level = 1;
  22. // /**
  23. // * 奖杯积分
  24. // * @var int
  25. // */
  26. // public $cupScore = 0;
  27. /**
  28. * 玩家申请加入公会列表
  29. * @var object
  30. */
  31. public $applylist;
  32. /**
  33. * 会长的OpenID
  34. * @var string
  35. */
  36. public $chairman_id = "";
  37. /**
  38. * 会长 name
  39. * @var string
  40. */
  41. public $chairman_name = "";
  42. // /**
  43. // * @var array 副会长集合
  44. // */
  45. // public $viceChairManArr = array();
  46. //
  47. // /**
  48. // * @var array 干部
  49. // */
  50. // public $officerManArr = array();
  51. /**
  52. * 公会成员
  53. * @var array
  54. */
  55. public $members = array();
  56. /**
  57. * 公会的宗旨/公告
  58. * @var string
  59. */
  60. public $declare = "";
  61. /**
  62. * 创建时间戳
  63. * @var type
  64. */
  65. public $createts = 0;
  66. /**
  67. * 允许一键(快速)加入, 默认开启,1是需要审核,2,不允许任何人加入
  68. * @var int
  69. */
  70. public $enableQuickIn = 0;
  71. /**
  72. * 徽章
  73. * @var int
  74. */
  75. // public $guild_img = 0;
  76. /**
  77. * 加入公会所需条件
  78. * @var int
  79. */
  80. // public $condition;
  81. // /**
  82. // * 弹劾 同意
  83. // * @var type
  84. // */
  85. // public $accuse_agreed = array();
  86. //
  87. // /**
  88. // * 弹劾 拒接
  89. // * @var type
  90. // */
  91. // public $accuse_refuse = array();
  92. // /**
  93. // * 弹劾 时间
  94. // * @var int
  95. // */
  96. // public $accuseTs = 0;
  97. // /**
  98. // * 弹劾 冷却时间
  99. // * @var int
  100. // */
  101. // public $accuse_coolTime = 0;
  102. // /**
  103. // * 公会总贡献
  104. // * @var int
  105. // */
  106. // public $allContribute = 0;
  107. // /**
  108. // * 公会公告编辑冷却时间
  109. // * @var int
  110. // */
  111. // public $announcement_CoolingTs = 0;
  112. //
  113. // /**
  114. // * 公会公告内容
  115. // * @var type
  116. // */
  117. // public $announcement_content = array();
  118. // /**
  119. // * 公会礼包购买数量记录
  120. // * @var type
  121. // */
  122. // public $giftnum_record;
  123. /**
  124. * 检察公会最大人数
  125. * @return boolean
  126. */
  127. function checkmemberfull() { //根据成员的 贡献度
  128. $levelInfo = GameConfig::guildlevel_getItem($this->level);
  129. return count($this->members) >= $levelInfo->maxPersoNum;
  130. }
  131. function updateGuildMemberCount() {
  132. daoInst()->update(GuildProc::tabGuild)
  133. ->data(array('membercount' => count($this->members)))
  134. ->where('guildId')->eq($this->guildId)
  135. ->andWhere('zoneid')->eq(req()->zoneid)
  136. ->exec();
  137. }
  138. /**
  139. * 创建新公会
  140. * @param type $mem
  141. * @return Data_Guild
  142. */
  143. public static function NewGuildInit($creator_uid, $creator_name, $guildName, $declare = "公告", $guild_img = "-") {
  144. $guildInfo = new Data_Guild();
  145. $guildInfo->guildId = self::CreateNewGuildID();
  146. $guildInfo->createts = now();
  147. $guildInfo->members = array($creator_uid);
  148. $guildInfo->level = 1;
  149. // $guildInfo->cupScore = 0;
  150. $guildInfo->applylist = ObjectInit();
  151. // $guildInfo->condition = ObjectInit();
  152. // $guildInfo->giftnum_record = ObjectInit();
  153. $guildInfo->chairman_id = $creator_uid;
  154. $guildInfo->chairman_name = $creator_name;
  155. $guildInfo->name = $guildName;
  156. $guildInfo->declare = $declare;
  157. // $guildInfo->guild_img = $guild_img;
  158. $guildInfo->enableQuickIn = 0; # 0 可以直接加入, 1 需要审批, 2 不允许任何人加入
  159. // $guildInfo->chairmanLastLogin = $base->lastLogin;
  160. return $guildInfo;
  161. }
  162. private static function CreateNewGuildID() {
  163. $key_id = MemKey_Guild::constGetCurrentMaxGuildID(req()->zoneid);
  164. return gMem()->increment($key_id);
  165. }
  166. }
  167. // <editor-fold defaultstate="collapsed" desc="闲置">
  168. /**
  169. * 玩家请求加入公会的消息结构体
  170. */
  171. class UserApplyForGuildModel {
  172. public $uid;
  173. public $ts;
  174. public $approved = false;
  175. public $name;
  176. public $level;
  177. /**
  178. * 创建一条新的请求信息
  179. * @param type $oid
  180. * @return UserApplyForGuildModel Description
  181. */
  182. public static function CreateApplyInfo($uid, $name, $level) {
  183. $ret = new UserApplyForGuildModel();
  184. $ret->uid = $uid;
  185. $ret->ts = now();
  186. $ret->name = $name;
  187. $ret->level = $level;
  188. $ret->approved = false;
  189. return $ret;
  190. }
  191. }
  192. /**
  193. * 公会值日消息类型
  194. */
  195. class GuildJournalType {
  196. const Join = 1; //加入
  197. const requestDonate = 2; //请求捐献
  198. const Quit = 3; //退会
  199. const ChangeChairMan = 4; //改变会长
  200. const BuyGift = 5; //购买礼包
  201. }
  202. /**
  203. * 公会日志数据体
  204. */
  205. class GuildJournalModel {
  206. public $ts;
  207. public $uid;
  208. public $type;
  209. public $datas;
  210. public static function CreateJoin($uid, $name) {
  211. $journal = new GuildJournalModel();
  212. $journal->ts = now();
  213. $journal->type = GuildJournalType::Join;
  214. $journal->uid = $uid;
  215. $journal->datas = array();
  216. $journal->datas [] = $uid;
  217. $journal->datas [] = $name;
  218. return $journal;
  219. }
  220. public static function RequestDonate($uid, $name, $cardId, $cardCount) {
  221. $journal = new GuildJournalModel();
  222. $journal->ts = now();
  223. $journal->type = GuildJournalType::requestDonate;
  224. $journal->uid = $uid;
  225. $journal->datas = array();
  226. $journal->datas [] = $uid;
  227. $journal->datas [] = $name;
  228. $journal->datas [] = $cardId;
  229. $journal->datas [] = $cardCount;
  230. $journal->datas [] = 0; //现在已得到的捐献数量
  231. return $journal;
  232. }
  233. public static function CreateQuit($uid, $name) {
  234. $journal = new GuildJournalModel();
  235. $journal->ts = now();
  236. $journal->type = GuildJournalType::Quit;
  237. $journal->uid = $uid;
  238. $journal->datas = array();
  239. $journal->datas [] = $uid;
  240. $journal->datas [] = $name;
  241. return $journal;
  242. }
  243. public static function CreateChangeChairman($uid, $name, $transferedid, $transferedname) {
  244. $journal = new GuildJournalModel();
  245. $journal->ts = now();
  246. $journal->type = GuildJournalType::ChangeChairMan;
  247. $journal->uid = $uid;
  248. $journal->datas = array();
  249. $journal->datas [] = $uid;
  250. $journal->datas [] = $name;
  251. $journal->datas [] = $transferedid;
  252. $journal->datas [] = $transferedname;
  253. return $journal;
  254. }
  255. public static function BuyGift($uid, $name) {
  256. $journal = new GuildJournalModel();
  257. $journal->ts = now();
  258. $journal->type = GuildJournalType::BuyGift;
  259. $journal->uid = $uid;
  260. $journal->datas = array();
  261. $journal->datas [] = $uid;
  262. $journal->datas [] = $name;
  263. return $journal;
  264. }
  265. }
  266. class GuildAnnouncementModel extends Object_ext {
  267. public $ts;
  268. public $title;
  269. public $content;
  270. function __construct($tag, $ts, $title, $content) {
  271. if (1 == func_num_args() && $tag) { # 默认的Object初始化方法
  272. parent::__construct($tag);
  273. } else {
  274. $this->ts = $ts;
  275. $this->title = $title;
  276. $this->content = $content;
  277. }
  278. }
  279. }
  280. // </editor-fold>